2010-08-25 2 views
9

Приложение ASP.NET импортирует CSV-файлы. Они в основном сохраняются в электронной таблице или блокноте, который запрашивает «набор символов», например: ISO-8859-2, Windows-1210, DOS-852 или Unicode(UTF-8).В чем разница между кодовой страницей и кодировкой символов?

Wiki говорит, что UTF-8 является кодировкой символов, но Windows-1210 и ISO-8859-2 являются кодовыми страницами. Являются ли эти термины взаимозаменяемыми?

.NET читает файлы, сохраненные в формате UTF-8. Открывает ли он сам кодирование?

ответ

3

Вы можете проверить Джоэл Спольски в article и этот пост here

+0

+1 Спасибо за ссылку на статью! – 2010-08-25 20:51:44

1

Цитата из вики:

«кодовой страницы другого названия кодировки символов Она состоит из таблицы значений, которая описывает набор символов для конкретного языка.».

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

и:

«кодовые страницы Windows, представляют собой наборы символов или кодовых страниц (известных как кодировки в других операционных системах), используемых в системах Microsoft Windows с 1980-х и 1990-х лет «.

1

Я думаю, что это в значительной степени исторический, но есть одно четкое различие. Кодовая страница - это справочная таблица, одна конкретная байтовая карта соответствует определенному символу. Различные страницы кода используют разные сопоставления. В прежние времена эти сопоставления фактически не выполнялись. Который требовал от вас также иметь шрифты с глифами для соответствия кодовой странице. Тем не менее проблема сегодня: btw, консольные окна имеют кодовую страницу.

В кодировке Unicode нет сопоставления. Им просто нужно сжать 32 бита в эффективный формат. Различные кодировки Unicode используют разные способы сжатия битов. Символ всегда имеет фиксированное значение (кодовое слово в Unicode говорит).

Текстовые файлы в кодировке UTF должны иметь спецификацию, позволяющую читателю автоматически определять кодировку. Нет такого соглашения для текстовых файлов, которые были закодированы с кодовой страницей. Получение хорошего текста из них - это немного дерьмовая стрельба. Это зло, которое должно умереть уже :)

+0

Хотя UTF-8, UTF-16 и UTF-32 являются чисто алгоритмическими, существуют кодировки Unicode, такие как GB18030 и UTF-EBCDIC, которые включают в себя таблицы отображения. Кроме того, спецификация НЕ требуется или рекомендуется для UTF-8. – dan04

+0

Brrr, по-прежнему выглядит как кодировки для меня. Подобно тому, как UTF-8 поддерживает ASCII. Да, спецификация не требуется, просто невероятно глупо не включать ее. Дело в том, что есть четко определенный стандарт, если вы * включите его *. В отличие от наличия * no * стандарта для кодированного кода. –

+0

Подумайте об этом, также освещает естественное состояние. Использование кодировки weirdo или намеренное исключение спецификации является «конкурентным преимуществом». –

0

.NET-классы, такие как StreamReader по умолчанию для кодировки UTF-8; нет, это не волшебное явление.

Смежные вопросы