2010-08-25 13 views
9

La mia applicazione ASP.NET importa file CSV. Vengono per lo più salvati in fogli di calcolo o blocco note che richiede "set di caratteri", ad esempio: ISO-8859-2, Windows-1210, DOS-852 o Unicode(UTF-8).Qual è la differenza tra la codepage e la codifica dei caratteri?

Wiki dice UTF-8 è una codifica dei caratteri, ma Windows-1210 e ISO-8859-2 sono pagine di codice. Questi termini sono intercambiabili?

.NET legge i file salvati in UTF-8. Scoprire se stesso?

risposta

3

Si potrebbe voler controllare di Joel Spolsky article e questo post here

+0

+1 Grazie per il collegamento dell'articolo! –

1

Citazioni da wiki:

"pagina di codice è un altro nome per la codifica dei caratteri Si compone di una tabella di valori che descrive il set di caratteri per una determinata lingua.".

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

e:

"pagine di codice di Windows sono insiemi di caratteri o le pagine di codice (note come la codifica dei caratteri in altri sistemi operativi) utilizzati nei sistemi Microsoft Windows da anni 1980 e 1990 ".

1

penso che è in gran parte storica, ma c'è una chiara distinzione. Una tabella codici è una tabella di ricerca, un particolare byte mappa per un determinato carattere. Le diverse code page usano differenti mappature. Nei tempi antichi, quelle mappature non venivano effettivamente eseguite. Il che richiedeva anche di disporre di caratteri con glifi che corrispondessero alla tabella codici. Ancora un problema oggi btw, le finestre di console hanno una pagina di codice.

Non esiste alcuna associazione in una codifica Unicode. Hanno semplicemente bisogno di spremere 32 bit in un formato efficiente. Diverse codifiche Unicode usano diversi modi per spremere i bit. Il personaggio ha sempre un valore fisso (codepoint in Unicode speak).

I file di testo con codifica UTF devono avere una distinta base che consente al lettore di rilevare automaticamente la codifica. Non esiste alcuna convenzione di questo tipo per i file di testo che sono stati codificati con una tabella codici. Ottenere un buon testo da loro è un po 'un tiro di merda. È un male che dovrebbe morire già :)

+0

Sebbene UTF-8, UTF-16 e UTF-32 siano puramente algoritmici, esistono codifiche Unicode come GB18030 e UTF-EBCDIC che includono tabelle di mapping. Inoltre, una BOM NON è richiesta o raccomandata per UTF-8. – dan04

+0

Brrr, sembra ancora un po 'di codifica per me. Simile a come UTF-8 favorisce l'ASCII. Sì, non è richiesto un BOM, è semplicemente incredibilmente stupido non includerlo. Il punto è che c'è uno standard ben definito se * lo * includi. Al contrario di avere * no * standard per il testo codificato in code page. –

+0

Vieni a pensarci, evidenzia anche lo stato naturale. Usare una codifica strana o omettere intenzionalmente una distinta base è un "vantaggio competitivo". –

0

Le classi .NET come StreamReader sono predefinite alla codifica UTF-8; no non è rilevato magicamente.

Problemi correlati