Résoudre le problème de conversion UTF-8 vers ISO-8859-1 en C#
Lors de la conversion de chaînes UTF-8 en ISO-8859-1, vous pouvez rencontrer des erreurs de résultat si elles ne sont pas traitées correctement. Analysons le problème et apportons une solution.
Code et questions
L'extrait de code que vous avez fourni tente de convertir UTF-8 en ISO-8859-1 à l'aide de Encoding.GetString
et Encoding.GetBytes
. Cependant, pour cette conversion particulière, des étapes supplémentaires sont nécessaires.
Solution : utilisez Encoding.Convert
Pour ajuster correctement le tableau d'octets avant le décodage vers l'encodage cible, Encoding.Convert
doit être utilisé. Voici le code modifié :
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);
Explication
Encoding.GetEncoding
Récupère l'encodeur et le décodeur pour un encodage de caractères spécifique. Encoding.GetBytes
Encodez la chaîne source UTF-8 dans un tableau d'octets. Cependant, décoder ce tableau d'octets directement à l'aide de Encoding.GetString
ne produit pas la chaîne ISO-8859-1 souhaitée.
Encoding.Convert
Ajustez le tableau d'octets pour qu'il corresponde à l'encodage cible. Dans ce cas, il convertit les octets pour qu'ils correspondent au codage ISO-8859-1. Le tableau d'octets ajusté peut ensuite être décodé en une chaîne ISO-8859-1 correcte. Encoding.GetString
Résultats
Après avoir appliqué cette modification, votre chaîne résultante sera correctement convertie en ISO-8859-1 et ne sera pas tronquée.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!