He buscado en Google este tema y he examinado todas las respuestas, pero sigo sin entenderlo.C# Convertir cadena de UTF-8 a ISO-8859-1 (Latin1) H
Básicamente necesito para convertir cadena UTF-8 a ISO-8859-1 y lo hago usando siguiente código:
Encoding iso = Encoding.GetEncoding("ISO-8859-1");
Encoding utf8 = Encoding.UTF8;
string msg = iso.GetString(utf8.GetBytes(Message));
Mi cadena de origen es
Message = "ÄäÖöÕõÜü"
Pero por desgracia mi cadena de resultado se convierte en
msg = "�ä�ö�õ�ü
¿Qué estoy haciendo mal aquí?
Todas las cadenas en .NET almacenan internamente las cadenas usando caracteres Unicode. No hay idea de que una cadena sea "windows-1252", "iso-8859-1", "utf-8", etc. ¿Está tratando de descartar cualquier carácter de su cadena que no tenga una representación en Windows? -1252 página de códigos? –
@IanBoyd En realidad, un [String] (https://msdn.microsoft.com/en-us/library/system.string (v = vs.110) .aspx) es una secuencia de contado de UTF-16 unidades de código. (. Por desgracia, el término Unicode ha sido mal aplicada en 'Encoding.Unicode' y en la API Win32 Unicode es un conjunto de caracteres, no una codificación UTF-16 es una de las varias codificaciones para Unicode..) –
Haces acción incorrecta: se make byte array en la codificación utf8, pero léelos por iso decode. Si quieres hacer cadena con símbolos codificados es simple llamada ** cadena msg = iso.GetString (iso.GetBytes (mensaje)); ** – StuS