2010-11-25 25 views
0

Je suis en train d'explorer le site Windows-1250 (meta http-equiv = "Content-Type" content = "text/html; jeu de caractères = windows-1250").Chaîne de conversion PHP de Windows-1250 à utf-8

Étant donné que ma base de données est utf-8, j'ai besoin de convertir les données en utf-8.

Pour ce travail j'ai essayé iconv ('windows-1250', 'UTF-8', $ s); il donne "Ålsarls" au lieu de "Čarls".

Cela donne un peu de meilleurs résultats lorsque les encodages changent de place iconv ('UTF-8', 'windows-1250', $ s); donne "Èarls" au lieu de "Čarls". Étrange.

Avez-vous une idée comment puis-je convertir cela en utf-8?

Merci d'avance.

+0

Êtes-vous sûr à 100% que le site que vous explorez est windows-1250? Pouvez-vous vous assurer dans le navigateur (voir quel encodage il bascule vers)? Quel est votre encodage de sortie? –

+0

Comment spécifiez-vous le codage de caractères de votre sortie? – Gumbo

+0

Quand vous dites "donne", que voulez-vous dire exactement? Pouvez-vous couper la base de données de l'équation et essayer d'imprimer le résultat converti à partir de votre code PHP, avec votre propre encodage de page étant UTF-8? Ou avez-vous déjà fait ça? – Jon

Répondre

2

Folks, je suis vraiment désolé. C'était le problème de la base de données. $ connection-> setCharset ('UTF8'); l'a réparé. Pas d'iconv, pas de mbstring.

J'étais si sûr que j'ai besoin de convertir charset, que j'ai oublié de vérifier si cela fonctionne sur la page uft8 sans conversion.

Merci pour tous les commentaires.

+1

au moins vous l'avez corrigé (enfin) – ajreal

0

Je vous recommande d'abord de vérifier si les données correctes atteignent iconv (et de la même façon ce qui sort de iconv).

Utilisez une instruction comme echo bin2hex($string) et consultez le flux d'octets pour $s avant iconv. Si vous avez la chaîne, vous pensez que le premier octet doit être c8. Si vous regardez ensuite le flux d'octets après iconv les premiers octets devraient être c48c (en UTF-8); Si vous convertissez en UCS-2, vous verrez 010c que vous aurez see comme caractère approprié dans unicode. En fonction des résultats, vous saurez si votre problème réside dans la collecte des données (c.-à-d. Si vous n'avez pas vu le c8), votre installation iconv (la conversion donne un mauvais résultat) ou la mise en base de données (ie le résultat de iconv est comme prévu).