Probleme d'encodage [Résolu/Fermé]

Signaler
Messages postés
2219
Date d'inscription
dimanche 29 octobre 2006
Statut
Contributeur
Dernière intervention
15 novembre 2014
-
aruju
Messages postés
2219
Date d'inscription
dimanche 29 octobre 2006
Statut
Contributeur
Dernière intervention
15 novembre 2014
-
Bonjour,

Je viens solliciter votre aider car j'ai un souci et il m'est impossible de le résoudre tout seul :-/

J'essaye de mettre en place un système wiki (dokuwiki précisément) et je rencontre un problème d'encodage que vous pouvez voir ici: (page de test) http://www.linux-pas-a-pas.org/dokuwiki/doku.php

Dokuwiki utilise codage utf-8 tandis que mon site (et surtout mon forum) utilise ISO. Sur la page d'accueil (colonne gauche) j'importe quelques données de mon forum via un fichier appelé externe.php qui ne s'affiche pas correctement..

Si je change d'encodage (de dokuwiki) en ISO alors c'est la colonne qui s'affiche comme il faut mais pas le reste de site...

Comment pourrais je résoudre ce problème?

Merci


6 réponses

Messages postés
277
Date d'inscription
lundi 14 février 2005
Statut
Membre
Dernière intervention
14 août 2009
39
bonjour ,
quand tu importe les données forum pour les afficher sur le site utilise la function Ut8_encode .
exemple :
print utf8_encode('Mes données');
ya aussi la function utf8_decode ( pour le cas inverse )
Messages postés
2219
Date d'inscription
dimanche 29 octobre 2006
Statut
Contributeur
Dernière intervention
15 novembre 2014
389
salut,

j'utilise
 include
Peux-tu m'indiquer la syntaxe exact? En sachant que la commande est:
<?php include('http://www.linux-pas-a-pas.org/forum-linux/extern.php?action=new&show=5&fid=2'); ?>
Messages postés
277
Date d'inscription
lundi 14 février 2005
Statut
Membre
Dernière intervention
14 août 2009
39
dans ton fichier :
forum-linux/extern.php
cherche la ligne qui contiens une ligne du genre :
if(isset($_get['action']) && $_get['action'] = 'new' ) {

bla bla bla


la doit y'avoir une requête qui permet de sélectionner les titre voulue pui les affciher
print ou echo c'est la que tu doit rajouter utf8-encode.



bla bla bla
}
Messages postés
2219
Date d'inscription
dimanche 29 octobre 2006
Statut
Contributeur
Dernière intervention
15 novembre 2014
389
après plusieurs essayes je colle ici le fichier externe.php
<?php




*******************************************************/



// Le nombre maximum de discussions qui seront affichées

$show_max_topics = 60;



// La longueur à laquelle les sujets des discussions seront tronquées (pour HTML)

$max_subject_length = 35;



/***********************************************************************/



// NE MODIFIEZ RIEN AU-DESSOUS DE CETTE LIGNE ! (à moins que vous sachiez ce que vous faites)





define('PUN_ROOT', './');

@include PUN_ROOT.'config.php';



// If PUN isn't defined, config.php is missing or corrupt

if (!defined('PUN'))

	exit('Le fichier "config.php" n\'existe pas ou est endommagé. Veuillez lancer install.php pour installer PunBB.');





// Make sure PHP reports all errors except E_NOTICE

error_reporting(E_ALL ^ E_NOTICE);



// Turn off magic_quotes_runtime

set_magic_quotes_runtime(0);





// Load the functions script

require PUN_ROOT.'include/functions.php';



// Load DB abstraction layer and try to connect

require PUN_ROOT.'include/dblayer/common_db.php';



// Load cached config

@include PUN_ROOT.'cache/cache_config.php';

if (!defined('PUN_CONFIG_LOADED'))

{

    require PUN_ROOT.'include/cache.php';

    generate_config_cache();

    require PUN_ROOT.'cache/cache_config.php';

}



// Make sure we (guests) have permission to read the forums

$result = $db->query('SELECT g_read_board FROM '.$db->prefix.'groups WHERE g_id=3') or error('Unable to fetch group info', __FILE__, __LINE__, $db->error());

if ($db->result($result) == '0')

	exit('Vous n\'avez pas les permissions');





// Attempt to load the common language file

@include PUN_ROOT.'lang/'.$pun_config['o_default_lang'].'/common.php';

if (!isset($lang_common))

	exit('Il n\'y a pas de pack de langue \''.$pun_config['o_default_lang'].'\' d\'installé. Veuillez ré-installer une langue de ce nom.');


// Check if we are to display a maintenance message
if ($pun_config['o_maintenance'] && !defined('PUN_TURN_OFF_MAINT'))
	maintenance_message();



if (!isset($_GET['action']))

	exit('Aucun paramètre de fourni. Veuillez voir extern.php pour les instructions.');





//

// Converts the CDATA end sequence ]]> into ]]>

//

function escape_cdata($str)

{

	return str_replace(']]>', ']]>', $str);

}





//

// Show recent discussions

//

if ($_GET['action'] == 'active' || $_GET['action'] == 'new')

{

	$order_by = ($_GET['action'] == 'active') ? 't.last_post' : 't.posted';

	$forum_sql = '';



	// Was any specific forum ID's supplied?

	if (isset($_GET['fid']) && $_GET['fid'] != '')

	{

		$fids = explode(',', trim($_GET['fid']));

		$fids = array_map('intval', $fids);



		if (!empty($fids))

			$forum_sql = ' AND f.id IN('.implode(',', $fids).')';

	}



	// Any forum ID's to exclude?

	if (isset($_GET['nfid']) && $_GET['nfid'] != '')

	{

		$nfids = explode(',', trim($_GET['nfid']));

		$nfids = array_map('intval', $nfids);



		if (!empty($nfids))

			$forum_sql = ' AND f.id NOT IN('.implode(',', $nfids).')';

	}



	// Should we output this as RSS?

	if (isset($_GET['type']) && strtoupper($_GET['type']) == 'RSS')

	{

		$rss_description = ($_GET['action'] == 'active') ? $lang_common['RSS Desc Active'] : $lang_common['RSS Desc New'];

		$url_action = ($_GET['action'] == 'active') ? '&amp;action=new' : '';



		// Send XML/no cache headers

		header('Content-Type: text/xml');

		header('Expires: '.gmdate('D, d M Y H:i:s').' GMT');

		header('Cache-Control: must-revalidate, post-check=0, pre-check=0');

		header('Pragma: public');



		// It's time for some syndication!

		echo '<?xml version="1.0" encoding="'.$lang_common['lang_encoding'].'"?>'."\r\n";

		echo '<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN" "http://my.netscape.com/publish/formats/rss-0.91.dtd">'."\r\n";

		echo '<rss version="0.91">'."\r\n";

		echo '<channel>'."\r\n";

		echo "\t".'<title>'.pun_htmlspecialchars($pun_config['o_board_title']).'</title>'."\r\n";

		echo "\t".'<link>'.$pun_config['o_base_url'].'/</link>'."\r\n";

		echo "\t".'<description>'.pun_htmlspecialchars($rss_description.' '.$pun_config['o_board_title']).'</description>'."\r\n";

		echo "\t".'<language>en-us</language>'."\r\n";



		// Fetch 15 topics

		$result = $db->query('SELECT t.id, t.poster, t.subject, t.posted, t.last_post, f.id AS fid, f.forum_name FROM '.$db->prefix.'topics AS t INNER JOIN '.$db->prefix.'forums AS f ON f.id=t.forum_id LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.moved_to IS NULL'.$forum_sql.' ORDER BY '.$order_by.' DESC LIMIT 15') or error('Unable to fetch topic list', __FILE__, __LINE__, $db->error());


		while ($cur_topic = $db->fetch_assoc($result))

		{

			if ($pun_config['o_censoring'] == '1')

				$cur_topic['subject'] = censor_words($cur_topic['subject']);



			echo "\t".'<item>'."\r\n";

			echo "\t\t".'<title>'.pun_htmlspecialchars($cur_topic['subject']).'</title>'."\r\n";

			echo "\t\t".'<link>'.$pun_config['o_base_url'].'/viewtopic.php?id='.$cur_topic['id'].$url_action.'</link>'."\r\n";

			echo "\t\t".'<description><![CDATA['.escape_cdata($lang_common['Forum'].': <a href="'.$pun_config['o_base_url'].'/viewforum.php?id='.$cur_topic['fid'].'">'.$cur_topic['forum_name'].'</a><br />'."\r\n".$lang_common['Author'].': '.$cur_topic['poster'].'<br />'."\r\n".$lang_common['Posted'].': '.date('r', $cur_topic['posted']).'<br />'."\r\n".$lang_common['Last post'].': '.date('r', $cur_topic['last_post'])).']]></description>'."\r\n";

			echo "\t".'</item>'."\r\n";

		}



		echo '</channel>'."\r\n";

		echo '</rss>';

	}





	// Output regular HTML

	else

	{

		$show = isset($_GET['show']) ? intval($_GET['show']) : 15;

		if ($show < 1 || $show > 50)

			$show = 15;



		// Fetch $show topics

		$result = $db->query('SELECT t.id, t.subject FROM '.$db->prefix.'topics AS t INNER JOIN '.$db->prefix.'forums AS f ON f.id=t.forum_id LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.moved_to IS NULL'.$forum_sql.' ORDER BY '.$order_by.' DESC LIMIT '.$show) or error('Unable to fetch topic list', __FILE__, __LINE__, $db->error());


		while ($cur_topic = $db->fetch_assoc($result))

		{

			if ($pun_config['o_censoring'] == '1')

				$cur_topic['subject'] = censor_words($cur_topic['subject']);



			if (pun_strlen($cur_topic['subject']) > $max_subject_length)

				$subject_truncated = pun_htmlspecialchars(trim(substr($cur_topic['subject'], 0, ($max_subject_length-5)))).' ...';

			else

				$subject_truncated = pun_htmlspecialchars($cur_topic['subject']);



			echo '<li><a href="'.$pun_config['o_base_url'].'/viewtopic.php?id='.$cur_topic['id'].'&amp;action=new" title="'.pun_htmlspecialchars($cur_topic['subject']).'">'.$subject_truncated.'</a></li>'."\n";

		}

	}



	return;

}





//

// Show users online

//

else if ($_GET['action'] == 'online' || $_GET['action'] == 'online_full')

{

	// Load the index.php language file

	require PUN_ROOT.'lang/'.$pun_config['o_default_lang'].'/index.php';

	

	// Fetch users online info and generate strings for output

	$num_guests = $num_users = 0;

	$users = array();

	$result = $db->query('SELECT user_id, ident FROM '.$db->prefix.'online WHERE idle=0 ORDER BY ident', true) or error('Unable to fetch online list', __FILE__, __LINE__, $db->error());


	while ($pun_user_online = $db->fetch_assoc($result))

	{

		if ($pun_user_online['user_id'] > 1)

		{

			$users[] = '<a href="'.$pun_config['o_base_url'].'/profile.php?id='.$pun_user_online['user_id'].'">'.pun_htmlspecialchars($pun_user_online['ident']).'</a>';

			++$num_users;

		}

		else

			++$num_guests;

	}



	echo $lang_index['Guests online'].': '.$num_guests.'<br />';



	if ($_GET['action'] == 'online_full')

		echo $lang_index['Users online'].': '.implode(', ', $users).'<br />';

	else

		echo $lang_index['Users online'].': '.$num_users.'<br />';



	return;

}





//

// Show board statistics

//

else if ($_GET['action'] == 'stats')

{

	// Load the index.php language file

	require PUN_ROOT.'lang/'.$pun_config['o_default_lang'].'/index.php';



	// Collect some statistics from the database

	$result = $db->query('SELECT COUNT(id)-1 FROM '.$db->prefix.'users') or error('Unable to fetch total user count', __FILE__, __LINE__, $db->error());
	$stats['total_users'] = $db->result($result);



	$result = $db->query('SELECT id, username FROM '.$db->prefix.'users ORDER BY registered DESC LIMIT 1') or error('Unable to fetch newest registered user', __FILE__, __LINE__, $db->error());
	$stats['last_user'] = $db->fetch_assoc($result);



	$result = $db->query('SELECT SUM(num_topics), SUM(num_posts) FROM '.$db->prefix.'forums') or error('Unable to fetch topic/post count', __FILE__, __LINE__, $db->error());
	list($stats['total_topics'], $stats['total_posts']) = $db->fetch_row($result);



	echo $lang_index['No of users'].': '.$stats['total_users'].'<br />';

	echo $lang_index['Newest user'].': <a href="'.$pun_config['o_base_url'].'/profile.php?id='.$stats['last_user']['id'].'">'.pun_htmlspecialchars($stats['last_user']['username']).'</a><br />';

	echo $lang_index['No of topics'].': '.$stats['total_topics'].'<br />';

	echo $lang_index['No of posts'].': '.$stats['total_posts'];



	return;

}





else

	exit('Bad request');


j'ai mis en gras la partie que j'ai remplacé avec utf8-encode
Messages postés
277
Date d'inscription
lundi 14 février 2005
Statut
Membre
Dernière intervention
14 août 2009
39
tu modifie la ligne 323 par ca:

echo '<li><a href="'.$pun_config['o_base_url'].'/viewtopic.php?id='.$cur_topic['id'].'&action=new" title="'.pun_htmlspecialchars($cur_topic['subject']).'">'.utf8_encode($subject_truncated).'</a></li>'."\n";
Messages postés
2219
Date d'inscription
dimanche 29 octobre 2006
Statut
Contributeur
Dernière intervention
15 novembre 2014
389
niquel ca marche :-)

merci pout ton aide ;-)