Maison > développement back-end > C++ > Comment puis-je convertir correctement l'encodage UTF-8 en ISO-8859-1 sans perte de données ?

Comment puis-je convertir correctement l'encodage UTF-8 en ISO-8859-1 sans perte de données ?

Mary-Kate Olsen
Libérer: 2025-01-08 14:27:41
original
922 Les gens l'ont consulté

How Can I Correctly Convert UTF-8 to ISO-8859-1 Encoding Without Data Loss?

Résoudre le défi de conversion de l'encodage UTF-8 vers ISO-8859-1

La conversion de chaînes de caractères entre différents encodages, en particulier lorsque des caractères non-ASCII sont impliqués, présente souvent des difficultés. Un problème fréquent est la conversion d'UTF-8 en ISO-8859-1 (Latin-1). Des conversions incorrectes pourraient transformer "ÄäÖöÕõÜü" en quelque chose comme "Ã?äÃ?öÃ?õÃ?ü".

Cela se produit parce que UTF-8 utilise un codage de longueur variable, tandis que ISO-8859-1 est un codage fixe sur un seul octet. La conversion directe à l'aide de méthodes telles que GetString() peut corrompre les caractères non-ASCII.

La solution réside dans l'utilisation de la méthode Encoding.Convert. Cela gère correctement le processus de conversion : il prend le tableau d'octets UTF-8, le transforme en un tableau d'octets ISO-8859-1, puis décode ce tableau en utilisant l'encodage cible.

Voici l'extrait de code corrigé :

Encoding iso = Encoding.GetEncoding("ISO-8859-1");
Encoding utf8 = Encoding.UTF8;
byte[] utfBytes = utf8.GetBytes(Message);
byte[] isoBytes = Encoding.Convert(utf8, iso, utfBytes);
string msg = iso.GetString(isoBytes);
Copier après la connexion

Cette approche garantit une conversion précise des caractères non-ASCII, produisant le résultat "ÄäÖöÕõÜü" attendu à partir de l'exemple d'entrée. La clé est la manipulation du tableau d'octets intermédiaire fournie par Encoding.Convert avant le décodage final.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal