J'essaie de transformer une chaîne UTF8 en caractères latins.Décoder la chaîne UTF8 en Latin
Voici un exemple de la façon dont je suis en train de réaliser ceci:
string sUnicode ="Peneda-Gerês";
string result = Encoding.Unicode.GetString(Encoding.Convert(Encoding.UTF8, Encoding.Unicode, Encoding.UTF8.GetBytes(sUnicode)));
MessageBox.Show(result);
Le retour de chaîne est le même? Pas de changement?
Que manque-t-il?
Si je vais à ce site
http://software.hixie.ch/utilities/cgi/unicode-decoder/utf8-decoder
et mettre le même texte, il se décode correctement "Peneda-Gerês";
Vous êtes convertir UTF-8 en UTF-8. Pourquoi cela montrerait-il des chaînes différentes? – Oded
Je préfère mettre les données dans des fichiers texte, et non dans le code source. Cependant, cela ressemble à un UTF-8 cassé (il est "encodé" en UTF-8 "deux fois"), et c'est donc une séquence d'octets cassée qui n'est pas vraiment géniale à mettre dans une chaîne C#. Pourquoi n'utilisez-vous pas un outil externe pour réparer le texte brisé? –
Une chaîne .NET est toujours codée en Unicode (UTF-16), donc votre chaîne d'origine n'est pas UTF-8 ... L'encodage n'a d'importance que si vous lisez ou écrivez dans un flux (ou si vous convertissez la chaîne de/à partir d'un tableau d'octets) –