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
Mary-Kate Olsenoriginal
2025-01-08 14:27:41901parcourir

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é :

<code class="language-csharp">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);</code>

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:
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