Si les données que vous envoyez au navigateur deviennent mutilées (moji-bake), vous obtiendrez des caractères poubelles. De plus, si vous spécifiez le mauvais jeu de caractères dans vos en-têtes META, votre navigateur affichera la page de manière incorrecte, ce qui provoquera de nouveau le moji-bake, parfois à des endroits aléatoires sur la page.
Lors de la manipulation des jeux de caractères CJK, vous devez être sûr d'utiliser le codage de caractères UTF8 pendant toute la durée de votre programme (stockage de données, la récupération, la manipulation des données dans votre code, l'affichage dans le browsser etc ...)
Qu'est-ce que UTF8? UTF8 gère les flux binaires de données, pas les chaînes. Cela signifie que les combinaisons de bits peuvent avoir une longueur variable. Les caractères ASCII ont une longueur fixe de 8 bits représentant 1 octet, cependant les caractères UTF8 peuvent être composés de 6bits, 8bits, 12bits, etc ... En tant que tel, UTF8 est sujet à ce que les Japonais appellent "mojibake".
En tant que codeur, de la base de données au codebase en passant par le navigateur, vous devriez essayer d'utiliser complètement UTF8. Pour le courrier électronique, vous pouvez utiliser UTF8, mais vous trouverez probablement que la plupart des serveurs de messagerie et des clients sont encore anciens et utilisent un mélange de jeux de caractères différents (par exemple, ISO9022X).
Paramètres de base de données Si vous êtes un utilisateur de MySQL, alors assurez-vous vous devez vous assurer que toutes les connexions à l'utilisation de DB UTF8, et que toutes les tables/champs utilisent UTF8. Par défaut, mysql utilise des jeux de caractères latins (suédois). Ces swedys kooky aiment leur sens de l'humour !!
Vérification Codebase Dans mes rédacteurs en chef d'expérience comme Notepad ++, Notepad2, UltraEdit, e, etc ... tous ont des problèmes de soutien UTF8. Ils fonctionnent principalement, mais puisque leurs développeurs n'utilisent pas les langages CJK eux-mêmes, ils ne sont pas parfaits. Des problèmes tels que la désactivation de BOM (Byte Order Mark), des onglets tronqués, une mauvaise conversion des jeux de caractères, etc ... présentent tous des problèmes.
Je recommande fortement d'utiliser un éditeur UTF8 éprouvé comme Maruo. Ceci est fait par une société japonaise, mais il existe une version anglaise (et une version d'essai) à http://www.hidemaru.interlink.or.jp/software/
Enfin, vous devrez peut-être convertir vos fichiers source en UTF8. Surtout si la base de code elle-même contient des chaînes de langage CJK. Manipulation des chaînes Toutes les chaînes de caractères doivent être codées en multi-octets. Remarquez que je n'ai pas dit double octet. UTF8 n'est pas un double octet mais multi-octets, en fonction du nombre total de bits utilisés pour représenter un caractère. En PHP, vous devez appeler les fonctions de chaîne MB spécifiquement. Ruby et d'autres langues ont un support plus transparent, mais vous devez vérifier les docs pour votre saveur de serveur d'application!
META Tags Découvrez google.co.jp ou yahoo.co.jp pour leurs en-têtes META. Ce sont des sites qui savent comment le faire correctement. Fondamentalement inclure la balise META suivante la doucment <TETE>
< meta http-equiv = "content-type" content = "text/html; charset = utf-8" >
Il est généralement sans danger de mélanger Les attributs de type de document HTML anglais avec le caractère ci-dessus aussi. Donc, l'ajout de la balise META ci-dessus semble fonctionner dans un document HTML qui a:
< html xmlns = "http://www.w3.org/1999/xhtml" xml: lang = "fr" lang = "fr ">
E-mail Ceci est une boîte de Pandore complètement différente. UTF8 fonctionne beaucoup, mais beaucoup de clients japonais plus anciens utilisent ISO2022X de plus. Cela ne vaut pas la peine d'être couvert ici.
Debugging UTF8 Problèmes Une fois que vous avez un éditeur UTF8 fiable comme Maruo, vous pouvez créer des pages statiques et résoudre vos problèmes.
espoir qui aide
Assurez-vous également que l'application (console, éditeur, page Web) que vous regardez les caractères avec est correctement configuré pour afficher le jeu de caractères attendu. –