Pregunta

De acuerdo con MSDN vb.net utiliza esta extendido juego de caracteres. En mi experiencia realmente utiliza esto:

text alt

  1. ¿Qué me falta? ¿Por qué dice que utiliza la una y utiliza la otra?
  2. ¿Estoy haciendo algo mal?
  3. ¿Hay algún tipo de herramienta de conversión para el juego de caracteres original?
¿Fue útil?

Solución

Este comportamiento se define en la documentación de la Chr comando :

El valor devuelto depende de la página de códigos para el subproceso actual, que está contenido en la propiedad de la clase ANSICodePage TextInfo en el espacio de nombres System.Globalization. Puede obtener ANSICodePage especificando System.Globalization.CultureInfo.CurrentCulture.TextInfo.ANSICodePage.

Así, la salida del Chr para valores mayores que 127 es dependiente del sistema. Si quieres resultados reproducibles, crear la instancia deseada de Encoding llamando Encoding.GetEncoding (String ) , a continuación, utilizar Encoding.GetChars (Byte ()) para convertir sus valores numéricos en caracteres.

Si subir un nivel en la tabla vinculada en su pregunta, verá que no afirman que esta tabla es siempre el resultado del comando Chr:

Los personajes que aparecen en Windows por encima de 127 dependen del tipo de letra seleccionado.

Las tablas de esta sección muestran el conjunto de caracteres por defecto para una aplicación de consola.

Su aplicación es una aplicación WinForm, no una aplicación de consola. Incluso en la consola, el juego de caracteres utilizado se puede cambiar (por ejemplo, utilizando el comando chcp), de ahí la palabra "default".

Para obtener información detallada sobre las codificaciones utilizadas en .NET, recomiendo el siguiente artículo de MSDN: codificación de caracteres en el .NET Framework.

Otros consejos

El primer juego de caracteres es página de códigos 437 (CP437), la segunda se refiere como página de códigos 1252 (CP1252), también conocido como Windows Latin-1.

supongo VB.Net es simplemente recogiendo la codificación predeterminada para la PC.

¿Cómo se escribe todo esto? Porque por lo general, cuando se utiliza una función de corriente de salida, puede especificar la codificación que va con ella.

Editar: Sé que esto no es C #, pero se puede ver la idea ...

Se tendría que establecer la codificación de su filestream, haciendo algo como esto: Ajuste de la codificación al crear el filestream

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top