net example acentos c# .net encoding hebrew

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