J'ai un fichier de vidage SQL constitué de texte en cyrillique russe incorrectement (WINDOWS-1251), exemple Èðàíñêèå
qui devrait être correctement affiché comme Иранские
.Comment puis-je convertir cyrillique stocké sous LATIN1 (sql) en vrai UTF8 cyrillique avec iconv?
Dans le passé, j'ai réussi à convertir le fichier SQL, mais la mémoire échoue dans ce que j'ai fait et dans quel ordre.
Logiquement, il serait logique que, comme il est stocké dans LATIN1 je convertirais de LATIN1 en WINDOWS-1251, puis de WINDOWS-1251 en UTF-8 // TRANSLIT ou quelque chose comme ça.
Jusqu'à présent, j'ai essayé:
1.
iconv -f WINDOWS-1251 -t UTF-8//TRANSLIT -o new.sql snippet.sql
Sortie:
Èðà ГГ±ГЄГЁГҐ
(pas ce que je veux)
2.
iconv -f LATIN1 -t UTF-8//TRANSLIT -o new.sql snippet.sql
Outp ut:
Ã<88>ðà Ãñêèå
(pas ce que je veux soit)
Remarques
Il est possible que je pourrais avoir converti une fois, puis deux fois pour obtenir mon résultat souhaité, mais je suis assez Bien sûr que sur la dernière étape je suis passé de
WINDOWS-1251
àUTF-8//TRANSLIT
comme cela a été écrit dans mes notes.Une autre note est que je regarde
Èðàíñêèå
dans le fichier SQL lorsque le codage du fichier est utf8 (natif dans vim). Si je faisset enc=latin1
dans vim alors je vois~Hð| íñêèå
comme si cela ne le rend pas plus confus.
Impressionnant - merci. Bien que je devais remplacer environ ~ 40-50 caractères UTF8 avec une chaîne temporaire indiquant le point hexadécimal Unicode, car iconv ne pouvait pas traiter sans ceux-ci, cela a fonctionné. –
En fait, il semble que j'ai oublié de spécifier '// TRANSLIT' dans l'iconv initial, j'aurais dû le faire à la place. –