J'ai une rangée varchar mysql (50) dans le classement cp1251_general_ci. Après mysql_fetch_row en php, j'ai une chaîne $. Puis-je faire ce qui suit:de MySQL classement cp1251_general_ci (Windows 1251) en UTF-8 php
echo mb_detect_encoding($string,'CP1251,UTF-8,Windows-1251'); // echoes Windows-1251
$string = mb_convert_encoding($string, 'UTF-8', 'Windows-1251');
echo mb_detect_encoding($string,'CP1251,UTF-8,Windows-1251'); // again echoes Windows-1251
Pourquoi la deuxième fois la chaîne n'est pas UTF-8?
J'ai aussi essayé
$string = iconv('Windows-1251', 'UTF-8', $string);
Mais encore une fois le charset est sur Windows 1251.
Et dans le résultat final, je me suis cassé le codage dans mon nom de fichier qui se compose de la variable $ string.
Comment puis-je convertir le classement mysql cp1251_general_ci (Windows 1251) en UTF-8?
post-scriptum
echo $string; \\ echoes ������
echo bin2hex($string); \\ echoes cce5e3e0f4eeed
$string = mb_convert_encoding($string, 'UTF-8', 'Windows-1251');
echo $string; \\ echoes Мегафон
echo bin2hex($string); \\ echoes d09cd0b5d0b3d0b0d184d0bed0bd
Mais
fopen("../tmp/$string.log", "w");
crée un fichier .../tmp/?????????????? journal. (Sous Linux)
Quel est exactement le contenu de la chaîne? Quelle est sa valeur hexadécimale ('echo bin2hex ($ string)')? – deceze
J'ai mis à jour ma question après votre commentaire – cofirazak