Pregunta

Sólo estoy mirando a los constructores para StreamReader / escritor y que tenga en cuenta que utiliza UTF8 por defecto. Alguien sabe qué es esto? Me hubiera presume que habría sido una apuesta más segura por defecto a Unicode.

¿Fue útil?

Solución

UTF-8 funciona con cualquier documento ASCII, y es típicamente más compacto que UTF-16 - pero todavía cubre la totalidad de Unicode. Yo diría que es UTF-8 ahora más común que UTF-16. Es la opción por defecto para XML (cuando no hay ninguna lista de materiales y la codificación explícita especificada).

¿Por qué cree que sería mejor por defecto a UTF-16? (Eso es lo que es Encoding.Unicode.)

EDIT: sospecho que usted está confundido sobre lo que exactamente UTF-8 puede manejar. Esta página lo describe muy claramente, incluyendo cómo cualquier carácter Unicode se codifica en particular. Es una codificación de anchura variable, pero cubre la totalidad de Unicode.

Otros consejos

UTF8 es Unicode, más específicamente uno de los tipos de codificación Unicode.

Lo más importante de su compatible con ASCII, además de que es el estándar por defecto para XML y HTML

"Unicode" es el nombre de una norma, por lo que no hay tal codificación como "Unicode". Más bien, hay dos métodos de mapeo: UTF y UCS .

En cuanto a "qué" parte, UTF-8 tiene la máxima compatibilidad con ASCII.

Como todos los demás ya se ha dicho, UTF-8 es un estándar de codificación dentro de Unicode. UTF-8 utiliza un número variable de bytes para codificar todos los caracteres Unicode hay.

Todos los caracteres ASCII son representados como es, de tal manera que los archivos ASCII se pueden leer con el ahora más preámbulos. Tan pronto como un byte en la corriente tiene su octavo bit (bit más alto,> 127) conjunto, esto provoca que el lector combinarlo con el byte siguiente hasta que es <128. La combinación se considera entonces como 1 carácter.

Hay personajes en América-1 (ANSII), que se codifican usando dos caracteres: por ejemplo é se codifica como e y '. Longitud ( 'E') por lo tanto es 2.

Windows utiliza UTF-16 internamente, lo que limita los caracteres codificables a 64 K, que es de ninguna manera todos los caracteres Unicde. UTF-32, por el momento permite que todos los personajes, pero se limita artificialmente también. Y ambos no son compatibles hacia arriba a ASCII, como los ceros tienen líderes:

A = ASCII h41 = UTF-8 h41 = UTF-16 h0041 = UTF-32 h00000041

También hay pequeñas y grandes codificaciones endian:

A = UTF-16 big endian h0041 = UTF-16 little endian h4100

Imagine utilizar UTF16 o UTF32 para guardar los archivos. Ellos (para archivos de texto) doble o quadrouple en tamaño en comparación con ASCII y UTF-8 (UTF-8 si sólo se utilizan caracteres ASCII). UTF-8 no sólo permite todos los caracteres del estándar Unicode, incluso para futuras mejoras, pero lo guarda en el espacio de manera eficiente también.

Por lo general, los dos primeros bytes de un archivo, la lista de materiales o marcador de orden de bytes, te dicen, que se utiliza estándar de codificación. Si se omite, XML y StreamRedaer utilizan UTF-8, como lo encontró a cabo. De nuevo, esto hace que tiene sentido, como archivos ASCII no tienen una lista de materiales y por lo tanto en la mayoría de los casos se leen correctamente. Esto podría no ser cierto para archivos utilizando toda América-1.

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