Convertir encodage des caractéres UTF8 et ISO8859-1

Toutes les questions et les aides qui concernent le langage PHP
Avatar de l’utilisateur
twin
Tutomaker Apprenti
Tutomaker Apprenti
 
Messages: 51
Enregistré le: Mar Aoû 19, 2008 3:53 pm
Localisation: Sur le serveur

Convertir encodage des caractéres UTF8 et ISO8859-1

Messagepar twin le Mar Aoû 19, 2008 4:01 pm

Hello,

J'ai un fichier php que j'affiche en include dans mon site qui est en ISO8859-1
Les données que va chercher mon fichier php est en UTF-8

Ce qui donne une erreurs avec les accents lorsque j'affiche le fichier sur mon site. Existe t-il une fonction où autre à inclure dans mon fichier php afin que cela soit convertis ?

Avatar de l’utilisateur
Yoyo
Gérant
Gérant
 
Messages: 2031
Enregistré le: Mer Sep 27, 2006 4:54 pm

Re: Convertir encodage des caractéres

Messagepar Yoyo le Mar Aoû 19, 2008 4:39 pm

Salut, tu vas avoir besoin de la fonction qui permet de convertir une chaîne au format UTF-8 en ISO8859-1:

Code: Tout sélectionner
utf8_decode() 


Et l'inverse, convertir une chaine ISO8859-1 en UTF-8:

Code: Tout sélectionner
utf8_encode() 


Bienvenue sinon :)
Vive les tutomakers ;)

Avatar de l’utilisateur
twin
Tutomaker Apprenti
Tutomaker Apprenti
 
Messages: 51
Enregistré le: Mar Aoû 19, 2008 3:53 pm
Localisation: Sur le serveur

Re: Convertir encodage des caractéres UTF8 et ISO8859-1

Messagepar twin le Mar Aoû 19, 2008 7:15 pm

Cool, merci. Je test cela le plus rapidement possible, et je te tiens au courant ;)

Avatar de l’utilisateur
twin
Tutomaker Apprenti
Tutomaker Apprenti
 
Messages: 51
Enregistré le: Mar Aoû 19, 2008 3:53 pm
Localisation: Sur le serveur

Re: Convertir encodage des caractéres UTF8 et ISO8859-1

Messagepar twin le Ven Sep 05, 2008 2:13 pm

Salut,

je reviens vers toi car visiblement, çà ne fonctionne pas.
h*ttp://www.toilef1.fr/commentaires.php
Code: Tout sélectionner
<?php
/* Ne tentez pas de créer ce fichier à la main !!! Lisez le fichier README.txt et lancez l'assistant d'instalaltion. */
// ** MySQL settings ** //
define('DB_NAME', '??');    // The name of the database
define('DB_USER', '??');     // Your MySQL username
define('DB_PASSWORD', '??'); // ...and password
define('DB_HOST', '??');    // 99% chance you won't need to change this value
define('DB_CHARSET', 'ISO-8859-1');
define('DB_COLLATE', '');
define('VHOST', 'no'); 
$base 
= '/';
$str = mb_convert_encoding($str, "ISO-8859-1", "auto");
// double check $base
if( $base == 'BASE' )
    die( 'Problème avec le fichier wp-config.php - La variable $base est définie avec la constante BASE lorsuque vous utilisez les URLs comme "/" ou "/blogs/"! Merci de corriger cela!' );
// You can have multiple installations in one database if you give each a unique prefix
$table_prefix  = 'wp_';   // Only numbers, letters, and underscores please!

// Change this to localize WordPress.  A corresponding MO file for the
// chosen language must be installed to wp-content/languages.
// For example, install de.mo to wp-content/languages and set WPLANG to 'de'
// to enable German language support.
define('WPLANG', 'fr_FR');
// uncomment this to enable wp-content/sunrise.php support
//define( 'SUNRISE', 'on' );

define( "WP_USE_MULTIPLE_DB", false );

/* That's all, stop editing! Happy blogging. */

define('ABSPATH', dirname(__FILE__).'/');
require_once(
ABSPATH.'wp-settings.php');
?>
<?php

//What blogs where last updated, lets grab a bunch at first.
$blogs = $wpdb->get_col("SELECT blog_id FROM $wpdb->blogs WHERE domain!='toileblogs.com' AND public = 1 AND last_updated!='0000-00-00 00:00:00' ORDER BY last_updated DESC LIMIT 10");

$tables = array();
foreach ($blogs as $blog) {
// we need _posts and _options tables for this to work
$blogOptionsTable = "wp_".$blog."_options";
$blogPostsTable = "wp_".$blog."_posts";
$blogCatTable = "wp_".$blog."_post2cat";
//add to array for later use
$table = array ($blog, $blogPostsTable, $blogOptionsTable, $blogCatTable );
$tables[] = $table; //push into tables
}

//now lets pull out 5 recent posts from each blog
$postresults = array();
foreach ($tables as $t) {
$postitems = $wpdb->get_results("SELECT ID,post_title,guid,post_content,comment_count,post_date_gmt FROM $t[1] WHERE post_status = 'publish' AND guid != '' ORDER BY id DESC LIMIT 0,10");
//push into array, had $postresults[] = $postitems;, but didn't work?

if ($postitems) {
foreach ($postitems as $postitem) {
$col = array($postitem->ID,$postitem->post_title,$postitem->guid,$postitem->post_content,$postitem->comment_count,$postitem->post_date_gmt,$t[0]);
$postresults[] = $col;
}
}
}

function cutpost($text) { // Fakes an excerpt if needed

$text = apply_filters('the_content', $text);
$text = str_replace(']]>', ']]>', $text);
$text = strip_tags($text);
$excerpt_length = 30;
$words = explode(' ', $text, $excerpt_length + 1);
if (count($words) > $excerpt_length) {
array_pop($words);
array_push($words, '[...]');
$text = implode(' ', $words);
}
return $text;
}
function cmp($a,$b) {
$at = strtotime($a[5]);
$bt = strtotime($b[5]);
if(
$at == $bt)
return(
0);
if(
$at < $bt)
return(
1);
else
return(-
1);
}

usort($postresults, 'cmp');
$postresults = array_slice($postresults, 0,10); //limit number of results

foreach ($postresults as $postresult) {
$siteurl = $wpdb->get_col("SELECT option_value FROM wp_". $postresult[6] ."_options WHERE option_name='siteurl'");
$blogname = $wpdb->get_col("SELECT option_value FROM wp_". $postresult[6] ."_options WHERE option_name='blogname'");

//todo - this is an array, need to sort and pull out
//$catitems = $wpdb->get_col("SELECT category_id FROM wp_".$postresult[6]."_post2cat WHERE $postitems->ID ORDER BY category_id");
            
?>
<a href="<?php echo $postresult[2]; ?>" rel="bookmark" title=' du blog F1 : "<?php echo $postresult[1]; ?>"' target="_blank"> - <?php echo $postresult[1]; ?></a> 
<?php } ?>


J'ai essayé de mettre ton code, mais quand j'affiche celui-ci, il n'arrive pas à se connecter à la bdd.

Avatar de l’utilisateur
Yoyo
Gérant
Gérant
 
Messages: 2031
Enregistré le: Mer Sep 27, 2006 4:54 pm

Re: Convertir encodage des caractéres UTF8 et ISO8859-1

Messagepar Yoyo le Ven Sep 05, 2008 2:20 pm

Hello, bah on va voir ça :)

Sinon quel est le rapport avec la connexion bdd avec la conversion du format d'une chaine de caractères ? ^^ C'est juste pour l'affichage des caractères que je t'ai dit de faire ça :D C'est quoi le souci exactement maintenant ? Code erreur ? Ligne avec l'erreur ?
Vive les tutomakers ;)

Avatar de l’utilisateur
twin
Tutomaker Apprenti
Tutomaker Apprenti
 
Messages: 51
Enregistré le: Mar Aoû 19, 2008 3:53 pm
Localisation: Sur le serveur

Re: Convertir encodage des caractéres UTF8 et ISO8859-1

Messagepar twin le Ven Sep 05, 2008 2:27 pm

Quelle réactivité ! ;)
Ce que je souhaite c'est que lorsqu'on arrive sur h*ttp://www.toilef1.fr/commentaires.php il est y les caractères qui s'affichent en Iso8859-1. Actuellement la page se charge correctement et se met en iso; mais le problème sont les accents qui ne se convertisses pas.

Avatar de l’utilisateur
Yoyo
Gérant
Gérant
 
Messages: 2031
Enregistré le: Mer Sep 27, 2006 4:54 pm

Re: Convertir encodage des caractéres UTF8 et ISO8859-1

Messagepar Yoyo le Ven Sep 05, 2008 2:29 pm

quand je vais sur ta page commentaires.php, je vois que la page est en UTF-8 :s Maintenant faut voir dans la page qui appelle commentaires.php, car la aucun problème d'accent :D
Vive les tutomakers ;)

Avatar de l’utilisateur
twin
Tutomaker Apprenti
Tutomaker Apprenti
 
Messages: 51
Enregistré le: Mar Aoû 19, 2008 3:53 pm
Localisation: Sur le serveur

Re: Convertir encodage des caractéres UTF8 et ISO8859-1

Messagepar twin le Ven Sep 05, 2008 2:39 pm

Tu as aucun problème d'accent lorsque tu es en UTF-8. Mais si tu passe ton navigateur en Iso, tu vas avoir le problème d'accent. Et c'est ce que je recherche à faire; que l'on puisse être en Iso sur la page et ne pas avoir des problèmes d'accents.

Avatar de l’utilisateur
Yoyo
Gérant
Gérant
 
Messages: 2031
Enregistré le: Mer Sep 27, 2006 4:54 pm

Re: Convertir encodage des caractéres UTF8 et ISO8859-1

Messagepar Yoyo le Ven Sep 05, 2008 3:02 pm

Déjà pour indiquer un le charset que tu veux utiliser, tu as deux choix. Envoyer un header en php, un code à placer comme ceci tout en haut:

Code: Tout sélectionner
header('Content-Type: text/html; charset=iso-8859-1'); 


Ou avec une balise meta dans le code html:

Code: Tout sélectionner
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 


Comme ça, j'aurais vu la page directement en en iso-8859-1 par défaut et donc j'aurais vu le problème d'accent.

Et ensuite, vu que ta page est encodée en utf8, il faut convertir les chaines avant chaque echo 'ma chaine'; ou echo $chaine; comme ceci: echo utf8_decode('ma chaine'); ou bien des utf8_decode($chaine);
Vive les tutomakers ;)

Avatar de l’utilisateur
twin
Tutomaker Apprenti
Tutomaker Apprenti
 
Messages: 51
Enregistré le: Mar Aoû 19, 2008 3:53 pm
Localisation: Sur le serveur

Re: Convertir encodage des caractéres UTF8 et ISO8859-1

Messagepar twin le Ven Sep 05, 2008 3:51 pm

Houla, j'ai du mal à comprendre.
J'ai ma ligne :
Code: Tout sélectionner
<a href="<?php echo $postresult[2]; ?>" rel="bookmark" title=' du blog F1 : "<?php echo $postresult[1]; ?>"' target="_blank"> - <?php echo $postresult[1]; ?></a>

Je souhaite changer :
Code: Tout sélectionner
<?php echo $postresult[1]; ?></a>


j'écrit :
Code: Tout sélectionner
<?php echo utf8_decode('$postresult'); $postresult[1]; ?></a>


?

Avatar de l’utilisateur
Yoyo
Gérant
Gérant
 
Messages: 2031
Enregistré le: Mer Sep 27, 2006 4:54 pm

Re: Convertir encodage des caractéres UTF8 et ISO8859-1

Messagepar Yoyo le Ven Sep 05, 2008 3:57 pm

Euu non :mrgreen:

Simplement:

Code: Tout sélectionner
<?php echo utf8_decode($postresult[1]); ?></a>


comme dis plus haut 8)
Vive les tutomakers ;)

Avatar de l’utilisateur
twin
Tutomaker Apprenti
Tutomaker Apprenti
 
Messages: 51
Enregistré le: Mar Aoû 19, 2008 3:53 pm
Localisation: Sur le serveur

Re: Convertir encodage des caractéres UTF8 et ISO8859-1

Messagepar twin le Ven Sep 05, 2008 4:08 pm

Yes, yes, yes, et encore yes !
Merci beaucoup; çà marche, et c'est pas faute d'avoir passé du temps la dessus. C'est génial, je te remercie :)

Par contre, je profite de tes compétences pour une autre question.

Sur la page commentaires, des titres sont en MAJUSCULES - je souhaite les faire passer en minuscule en css (jusqu'à, aucun problème) - mais est-ce qu'il est possible d'avoir uniquement la première lettre en MAJ ? ;)

Avatar de l’utilisateur
Yoyo
Gérant
Gérant
 
Messages: 2031
Enregistré le: Mer Sep 27, 2006 4:54 pm

Re: Convertir encodage des caractéres UTF8 et ISO8859-1

Messagepar Yoyo le Ven Sep 05, 2008 4:15 pm

Et voila chef, tu fais un
Code: Tout sélectionner
strtolower() 
http://be.php.net/manual/fr/function.strtolower.php pour tout mettre en minuscule, puis un
Code: Tout sélectionner
ucfirst() 
http://be.php.net/ucfirst pour mettre la première lettre en majuscule ^^ . Mais c'est en php et pas en css :)
Vive les tutomakers ;)

Avatar de l’utilisateur
twin
Tutomaker Apprenti
Tutomaker Apprenti
 
Messages: 51
Enregistré le: Mar Aoû 19, 2008 3:53 pm
Localisation: Sur le serveur

Re: Convertir encodage des caractéres UTF8 et ISO8859-1

Messagepar twin le Ven Sep 05, 2008 4:34 pm

Super...ça va semblé idiot; mais je me suis bien amusé avec tes bouts de code.
C'est niquel en tout cas; il ne reste plus qu'à savoir pour afficher que certains blogs ;)

Je te remercie énormément. Je suis content d'avoir trouvé se forum (merci wri) pour recevoir de l'aide en apprendre un peu en php

Avatar de l’utilisateur
Yoyo
Gérant
Gérant
 
Messages: 2031
Enregistré le: Mer Sep 27, 2006 4:54 pm

Re: Convertir encodage des caractéres UTF8 et ISO8859-1

Messagepar Yoyo le Ven Sep 05, 2008 4:39 pm

Le forum est fait pour ça, hésite pas à créer un autre post en détaillant ton problème si un autre souci arrive :shock: :D
Vive les tutomakers ;)

Avatar de l’utilisateur
Valbuena72
Tutomaker Avancé
Tutomaker Avancé
 
Messages: 227
Enregistré le: Dim Avr 06, 2008 2:58 pm

Re: Convertir encodage des caractéres UTF8 et ISO8859-1

Messagepar Valbuena72 le Dim Sep 14, 2008 7:13 pm

c'est toujours marrant de donne du boulot a yoyo :mrgreen:
moi j'ai fait une pause sinon il allait me mettre une claque :mrgreen:

bref yoyo aide beaucoup (trop :boulay: )
j'ai eu le meme problème pour les adresse mial d'un script commentaires

araadon
Tutomaker Junior
Tutomaker Junior
 
Messages: 4
Enregistré le: Mar Sep 16, 2008 12:31 am

Re: Convertir encodage des caractéres UTF8 et ISO8859-1

Messagepar araadon le Mar Sep 16, 2008 12:40 am

Bonsoir a tous,
je suis nouveau sur ce forum et j'aurai besoin d'aide.
J'ai rapatrié de mon serveur ma Bdd, qui est enregistré sur mon ordi.
J'ai effacé par la suite ma bdd sur le serveur.
Le fichier est sous forme xxxxx.sql
Je voulais l'exporter à nouveau, mais me suis rendu compte que toutes les accentuations ont été modifiées,
exemple d'un mot : réfugiés devient réfugiés
Y a til un moyen pour pour rectifier ces erreurs que contient mon fichier (7,8 MO)
Dernière précision : je n'ai aucune compétence en programmation.

D'emblée je vous en remercie
Cordialement.

Avatar de l’utilisateur
Yoyo
Gérant
Gérant
 
Messages: 2031
Enregistré le: Mer Sep 27, 2006 4:54 pm

Re: Convertir encodage des caractéres UTF8 et ISO8859-1

Messagepar Yoyo le Mar Sep 16, 2008 12:47 am

Si ta base de données est en utf8, tu modifies le format des tables en utf8. Actuellement elles sont surement en latin1, d'où le problème !

Bonne soirée .
Vive les tutomakers ;)

araadon
Tutomaker Junior
Tutomaker Junior
 
Messages: 4
Enregistré le: Mar Sep 16, 2008 12:31 am

Re: Convertir encodage des caractéres UTF8 et ISO8859-1

Messagepar araadon le Mar Sep 16, 2008 12:50 am

Merci pour votre réponse,
pour le moment je souhaite convertir juste le fichier que j'ai sur mon ordi
es - ce possible?
cordialement

Avatar de l’utilisateur
Yoyo
Gérant
Gérant
 
Messages: 2031
Enregistré le: Mer Sep 27, 2006 4:54 pm

Re: Convertir encodage des caractéres UTF8 et ISO8859-1

Messagepar Yoyo le Mar Sep 16, 2008 1:09 am

Je ne crois pas, le mieux serait de l'importer dans le format dans lequel elle a été exportée, ce serait plus logique.
Vive les tutomakers ;)


Suivante

Retourner vers Langage PHP

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 0 invités