2010-08-25 14 views
9

Mi aplicación ASP.NET importa archivos CSV. En su mayoría, se guardan en una hoja de cálculo o en un bloc de notas que pide un "conjunto de caracteres", por ejemplo: ISO-8859-2, Windows-1210, DOS-852 o Unicode(UTF-8).¿Cuál es la diferencia entre la página de códigos y la codificación de caracteres?

Wiki dice UTF-8 es una codificación de caracteres pero Windows-1210 y ISO-8859-2 son páginas de códigos. ¿Son estos términos intercambiables?

.NET lee archivos guardados en UTF-8 bien. ¿Descubre la codificación en sí?

Respuesta

3

Es posible que desee comprobar hacia fuera de Joel Spolsky article y este post here

+0

+1 ¡Gracias por el enlace al artículo! –

1

Citas de wiki:

"página de códigos es otro nombre para la codificación de caracteres Consiste en una tabla de valores que describe el conjunto de caracteres para un idioma en particular.".

http://en.wikipedia.org/wiki/Code_page

y:

"páginas de códigos de Windows son conjuntos de caracteres o páginas de códigos (conocida como codificación de caracteres en otros sistemas operativos) utilizados en los sistemas Microsoft Windows desde la década de 1980 y 1990 "

1

Creo que es en gran parte histórica, pero hay una distinción clara. Una página de códigos es una tabla de búsqueda, un byte particular se asigna a un personaje específico. Las diferentes páginas de códigos usan diferentes asignaciones. En los viejos tiempos, esas asignaciones en realidad no se realizaban. Lo que requería que también tuviera fuentes que tenían glifos para coincidir con la página de códigos. Todavía un problema hoy por cierto, las ventanas de la consola tienen una página de códigos.

No hay asignación en una codificación Unicode. Simplemente necesitan comprimir 32 bits en un formato eficiente. Diferentes codificaciones Unicode usan diferentes formas de exprimir los bits. El personaje siempre tiene un valor fijo (punto de código en lenguaje Unicode).

Los archivos de texto codificados en UTF deben tener una lista de materiales (BOM) que permita al lector detectar automáticamente la codificación. No existe tal convención para los archivos de texto codificados con una página de códigos. Sacarles un buen texto es una mierda. Es un mal que debería morir ya :)

+0

Aunque UTF-8, UTF-16 y UTF-32 son puramente algorítmicos, existen codificaciones Unicode como GB18030 y UTF-EBCDIC que sí incluyen tablas de asignación. Además, NO se requiere ni se recomienda una lista de materiales para UTF-8. – dan04

+0

Brrr, todavía parece codificaciones de bits para mí. Similar a cómo UTF-8 favorece a ASCII. Sí, no se requiere una lista de materiales, es simplemente increíblemente estúpido no incluirla. El punto es que hay un estándar bien definido si * lo * incluye. A diferencia de tener * no * estándar para el texto codificado en la página de códigos. –

+0

Ahora que lo pienso, también resalta el estado natural. Usar una codificación de bicho raro u omitir intencionadamente una BOM es una 'ventaja competitiva'. –

0

Clases .NET como StreamReader por defecto a la codificación UTF-8; no, no se detecta mágicamente

Cuestiones relacionadas