Maison >développement back-end >C++ >Comment convertir correctement les chaînes UTF-8 en ISO-8859-1 en C# ?

Comment convertir correctement les chaînes UTF-8 en ISO-8859-1 en C# ?

DDD
DDDoriginal
2025-01-08 14:21:40571parcourir

How to Correctly Convert UTF-8 Strings to ISO-8859-1 in C#?

Gérer correctement les conversions de chaînes UTF-8 vers ISO-8859-1 en C#

La conversion directe des chaînes UTF-8 en ISO-8859-1 (Latin-1) entraîne souvent une perte de données et une corruption des caractères. En effet, UTF-8 utilise un codage de longueur variable, tandis que ISO-8859-1 est un codage sur un seul octet de longueur fixe. Changer simplement le codage sans conversion d'octet appropriée entraînera une sortie incorrecte.

La clé d'une conversion précise réside dans l'utilisation de la méthode Encoding.Convert. Cette méthode mappe correctement les octets UTF-8 à leurs équivalents ISO-8859-1, en gérant toutes les transformations nécessaires. Les caractères non présents dans l'ISO-8859-1 seront remplacés par leurs meilleures approximations ou pourront être perdus.

Voici le code C# corrigé :

<code class="language-csharp">Encoding iso = Encoding.GetEncoding("ISO-8859-1");
Encoding utf8 = Encoding.UTF8;
string utf8String = "ÄäÖöÕõÜü"; // Example UTF-8 string
byte[] utf8Bytes = utf8.GetBytes(utf8String);
byte[] isoBytes = Encoding.Convert(utf8, iso, utf8Bytes);
string iso88591String = iso.GetString(isoBytes);</code>

Ce code récupère d'abord les octets UTF-8 de la chaîne d'origine. Ensuite, Encoding.Convert transforme ces octets en une représentation adaptée à l'ISO-8859-1. Enfin, le tableau d'octets résultant est décodé à l'aide du codage ISO-8859-1 pour produire la chaîne finale. N'oubliez pas que tous les caractères extérieurs au jeu de caractères ISO-8859-1 peuvent être perdus ou remplacés au cours de ce processus.

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