J'extrais les données d'un jeu coréen (Ragnarok Online) pour créer une base de données. Je n'ai eu aucun problème pendant des années pour convertir les chaînes de l'encodage ISO-8859-1 à l'encodage EUC-KR en C#.Conversion de chaîne en codage coréen
La fonction que j'ai utilisée pour convertir la chaîne était la suivante.
return Encoding.GetEncoding("EUC-KR").GetString(Encoding.GetEncoding("ISO-8859-1").GetBytes(text);
Exemple
º»Ç︧ -> 본헬름
Maintenant, je rencontre des personnages ne convertissaient correctement et je ne sais pas pourquoi.
La chaîne ansi est converti en
Œc¾ç²á -> Oc양꿍
qui est mal, je suppose. J'ai testé un peu avec l'encodage dans le bloc-notes ++ et si je convertis la chaîne en coréen (Windows-949 au lieu de EUC-KR) elle montre la bonne.
똠양꿍
Mais en C#, si j'utilise la page de codes 949, elle est toujours la mauvaise. La page de codes "Windows-949" n'est pas connue dans .net framework.
Quel est le codage correct pour ceci ou est-ce que la chaîne source est fausse?
Merci beaucoup.
/éditer: problème résolu. semble comme ISO-8859-1 et EUC-KR étaient faux. Si je convertis de 1252 -> 949 ça va.
La vraie question pour moi est: où avez-vous trouvé le 'texte'? Pour les scénarios d'encodage, je m'attendrais à ce que l'entrée soit 'byte []'.Si vous avez analysé 'text' en quelque sorte * autre * que dans l'encodage correct, il est fort probable que vous ayez déjà corrompu la valeur bien avant qu'elle n'atteigne ce code. –
Le texte est lu à partir d'un fichier texte. Il semble vraiment que l'ISO-8859-1 n'est pas l'encodage correct pour cela. Avec la page de code source 1252 et la page de codes cible 949, cela fonctionne bien. Mais c'est étrange c'est la première fois que j'ai rencontré un tel problème. – mrdiablo
mais ... pourquoi essayez-vous même ISO-8859-1/1252/949? Vous semblez * connaître * l'encodage correct - c'est 51949 aka EUC-KR. Vous devriez lire le fichier texte * en utilisant cet encodage *. –