example - encoding utf-8 c#
C#Encoding.Converting Latin to Hebrew (1)
const string Str = "âìéåï_1";
Encoding latinEncoding = Encoding.GetEncoding("Windows-1252");
Encoding hebrewEncoding = Encoding.GetEncoding("Windows-1255");
byte[] latinBytes = latinEncoding.GetBytes(Str);
string hebrewString = hebrewEncoding.GetString(latinBytes);
hebrewString:
גליון_1
En el ejemplo proporcionado, "Window-1252" no es realmente ASCII, es ASCII extendido, y por algún motivo Encoding.Convert
con estas dos codificaciones no puede convertir ASCII de rango extendido, por lo que todos los +127 caracteres se convierten en 63 (¿es decir?). Al "convertir" de un byte de caracteres ASCII extendido [] a otro, esperaría que los bytes fueran los mismos, solo cuando los convierta en una cadena .ico UnNetde, esperaría que fueran diferentes. No estoy seguro de por qué Convert
está convirtiendo +127 caracteres en ''?''.
Intento buscar y analizar un documento de Excel en línea que está escrito en hebreo pero desafortunadamente en una codificación no hebrea.
Como ejemplo, intento convertir la siguiente cadena: "âìéåï_1", que sirve como el nombre de la primera hoja para hebreo con el código C #, pero no puedo hacerlo.
Sé que lo anterior es convertible, ya que cuando lo abro en NotePad ++ y selecciono Encoding / Character Sets / Hebrew / Windows 1255, puedo ver: "גליון_1", que es la representación hebrea correcta de la cadena anterior.
Estoy usando el código a continuación
string str = "âìéåï_1";
Encoding windows = Encoding.GetEncoding("Windows-1255");
Encoding ascii = Encoding.GetEncoding("Windows-1252");
byte[] asciiBytes = ascii.GetBytes(str);
byte[] windowsBytes = Encoding.Convert(ascii, windows, asciiBytes);
char[] windowsChars = new char[windows.GetCharCount(windowsBytes, 0, windowsBytes.Length)];
windows.GetChars(windowsBytes, 0, windowsBytes.Length, windowsChars, 0);
string windowsString = new string(windowsChars);
Supuse que la codificación de la cadena de origen es Windows-1252, ya que cuando la pego en NotePad ++ y cambio la codificación a Windows-1252, la cadena sigue siendo la misma ...
Probablemente estoy haciendo algo mal aquí, ¿alguien sabe cómo convertir lo anterior correctamente?
Gracias,
Mikey