Probleme d'encodage

Résolu/Fermé
aruju Messages postés 2214 Date d'inscription dimanche 29 octobre 2006 Statut Contributeur Dernière intervention 15 novembre 2014 - 10 nov. 2008 à 15:00
aruju Messages postés 2214 Date d'inscription dimanche 29 octobre 2006 Statut Contributeur Dernière intervention 15 novembre 2014 - 10 nov. 2008 à 18:37
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) https://linux-pas-a-pas.org

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

muska92 Messages postés 277 Date d'inscription lundi 14 février 2005 Statut Membre Dernière intervention 14 août 2009 42
10 nov. 2008 à 15:27
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 )
0
aruju Messages postés 2214 Date d'inscription dimanche 29 octobre 2006 Statut Contributeur Dernière intervention 15 novembre 2014 403
10 nov. 2008 à 17:44
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'); ?>
0
muska92 Messages postés 277 Date d'inscription lundi 14 février 2005 Statut Membre Dernière intervention 14 août 2009 42
10 nov. 2008 à 17:57
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
}
0
aruju Messages postés 2214 Date d'inscription dimanche 29 octobre 2006 Statut Contributeur Dernière intervention 15 novembre 2014 403
10 nov. 2008 à 18:18
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
muska92 Messages postés 277 Date d'inscription lundi 14 février 2005 Statut Membre Dernière intervention 14 août 2009 42
10 nov. 2008 à 18:26
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";
0
aruju Messages postés 2214 Date d'inscription dimanche 29 octobre 2006 Statut Contributeur Dernière intervention 15 novembre 2014 403
10 nov. 2008 à 18:37
niquel ca marche :-)

merci pout ton aide ;-)
0