Манекен-путеводитель по Unicode

Может ли кто-нибудь дать мне краткие определения

  • Unicode
  • UTF7
  • UTF8
  • UTF16
  • UTF32
  • Кодовые
  • Как они отличаются от Ascii/Ansi/Windows 1252

Я не получаю ссылки на wikipedia или невероятные подробности, а также краткую информацию о том, как и почему возникли огромные изменения в Unicode и почему вы должны заботиться как программист.

Ответ 2

Если вы хотите действительно краткое введение: Unicode за 5 минут

Или, если вы используете однострочные:

  • Unicode: сопоставление символов с целыми числами ( "кодовые точки" ) в диапазоне от 0 до 1,114,111; охватывает почти все используемые письменные языки.
  • UTF7: кодирование кодовых точек в поток байтов с четным четким; в общем не используйте
  • UTF8: кодирование кодовых точек в поток байтов, где каждый символ может принимать один, два, три или четыре байта для представления; должен быть вашим основным выбором кодирования
  • UTF16: кодирование кодовых точек в поток слов (16-разрядные единицы), где каждый символ может принимать одно или два слова (два или четыре байта) для представления
  • UTF32: кодировка кодовых точек в поток 32-битных единиц, где каждый символ принимает ровно одну единицу (четыре байта); иногда используется для внутреннего представления
  • Кодовые страницы: система в DOS и Windows, в которой символы назначаются целым числам и связанная с ними кодировка; каждый из них охватывает только подмножество языков. Обратите внимание, что эти назначения обычно отличаются от назначений Unicode.
  • ASCII: очень общее назначение символов целым числам и прямая кодировка в байтах (все четкие четкие); назначение - это подмножество Unicode, а кодировка подмножества UTF-8
  • ANSI: орган по стандартизации
  • Windows 1252: широко используемая кодовая страница; он похож на ISO-8859-1 или Latin-1, но не тот же, и оба часто путаются.

Почему вас это волнует? Потому что, не зная, что набор символов и кодировка используются, вы действительно не знаете, какие символы представляет данный поток байтов. Например, байт 0xDE может кодировать

  • Þ (LATIN CAPITAL LETTER THORN)
  • fi (LATIN SMALL LIGATURE FI)
  • ή (GREEK SMALL LETTER ETA WITH TONOS)
  • или 13 других символов, в зависимости от используемого кодирования и набора символов.

Ответ 3

Как и связанный со ссылкой Joel one, у меня есть моя собственная статья, которая смотрит на нее с точки зрения .NET, просто для разнообразия...

Ответ 5

Да, я понял кое-что, но это может быть неправильно, однако это помогло мне понять это.

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

UTF7, 8 16 и т.д. - все это разные кодовые страницы, использующие разные форматы.

Тот же файл, который хранится в байтах с использованием разных кодовых страниц, будет иметь другой размер файла, поскольку байты хранятся по-разному.

Они также действительно не отличаются от окон 1252, как просто другой кодовой страницы.

Для лучшего умного ответа попробуйте одну из ссылок.

Ответ 6

Другие уже указали достаточно хорошие ссылки для начала. Я не перечисляю настоящий путеводитель по Dummy, а некоторые указатели на странице консорциума Unicode. Вы найдете еще несколько причин для использования разных кодировок на страницах консорциума Unicode.

Часто задаваемые вопросы Unicode - достаточно хорошее место для ответа на некоторые (не все) ваши запросы.

Более сжатый ответ на вопрос о том, почему существует Unicode, присутствует в разделе Newcomer на веб-сайте Unicode:

Unicode предоставляет уникальный номер для каждого персонажа, независимо от того, что платформа, независимо от того, что программа, независимо от того, какой язык.

Что касается технических причин использования UTF-8, UTF-16 или UTF-32, ответ лежит в Техническое введение в Unicode

UTF-8 популярен для HTML и подобных протоколы. UTF-8 - это способ преобразование всех символов Unicode в кодирование переменной длины байт. Он имеет то преимущество, что Символы Unicode, соответствующие знакомый набор ASCII имеет одинаковые байтов как ASCII, и что Unicode символы, преобразованные в UTF-8, могут использоваться с большим количеством существующего программного обеспечения без обширной перезаписи программного обеспечения.

UTF-16 популярен во многих средах которые должны сбалансировать эффективный доступ персонажам с экономичным использованием место хранения. Он достаточно компактен и все используемые символы в один 16-разрядный блок кода, тогда как все остальные символы доступны через пары 16-разрядных блоков кода.

UTF-32 популярен там, где память это не проблема, но фиксированная ширина, одиночная доступ кодовых блоков к символам желательно. Каждый символ Юникода закодированный в одном 32-битном блоке кода при использовании UTF-32.

Все три формы кодирования нуждаются в большинстве 4 байта (или 32 бита) данных для каждого характер.

Общее правило большого пальца - использовать UTF-8, когда преобладающие языки, поддерживаемые вашим приложением, говорят к западу от реки Инд, UTF-16 для противоположной (к востоку от Инда) и UTF-32, когда вы заинтересованы об использовании символов с равномерным хранением.

Кстати, UTF-7 не является стандартом Unicode и был разработан в первую очередь для использования в почтовых приложениях.