Это хорошее описание Unicode? - PullRequest
0 голосов
/ 22 июня 2009

Вот мое описание Unicode. Пожалуйста, исправьте и прокомментируйте.

Unicode отделяет представление символа от механизма хранения символа. Это отличается от ANSI, в котором каждый символ представлен байтом.

Кодовая страница ANSI отображает символы в байтовые представления. Юникод отображает символы в кодовые точки. Кодовая точка - это абстрактное понятие. Ответственность за представление кодовых точек Unicode в байтах лежит на схеме кодирования.

Существует много схем кодирования Unicode. Некоторые схемы кодирования используют фиксированное количество байтов для представления кодовой точки Unicode. Этот подход должен сбалансировать количество кодовых точек, которые может представлять кодировка, и объем требуемого пространства хранения. Другие схемы кодирования используют переменное число байтов для представления кодовой точки Unicode. Этот подход усложняет синтаксический анализ данных, но они избегают ограничения «объема представления» / «пространства хранения», от которого страдают кодировки с фиксированной длиной байта.

UTF-8 является наиболее распространенной кодировкой Unicode. Популярность UTF-8 обусловлена ​​тем, что он совместим с ASCII. ASCII является подмножеством ANSI, которое содержит английский алфавит, цифры и обычные знаки препинания. UTF-8 - кодировка переменной длины, способная кодировать все кодовые точки Unicode.

Ответы [ 5 ]

4 голосов
/ 22 июня 2009

Это, вероятно, хорошее место для упоминания Джоэла, что каждый программист должен знать о юникоде

0 голосов
/ 24 июня 2009

UTF-8 популярен только в западном полушарии. Языки, которые всегда нуждались в многобайтовом кодировании, получают гораздо больше пользы от использования UTF-16 или даже UTF-32.

Приветствия

0 голосов
/ 23 июня 2009

Я бы избавился от ссылок на ANSI на вашем месте. В контексте наборов символов и кодировок «ANSI» обычно относится к кодовой странице по умолчанию любой системы (Windows), в которой вы работаете. Это обычно означает одну из расширенных или измененных версий Microsoft существующего стандарта, например, windows-1252 вместо ISO-8859-1. По иронии судьбы, эти расширения не были благословлены ANSI. Такое использование термина «ANSI» было придумано Microsoft и обычно можно найти в разделе выбора кодировки диалоговых окон «Сохранить как» в приложениях Microsoft, таких как Блокнот. Там вы обычно найдете опцию «Unicode», которая на самом деле означает UTF-16 (little-endian, без спецификации).

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

0 голосов
/ 22 июня 2009

Несколько тонких моментов: совместимость с ASCII - это не только * (или даже главная) причина популярности UTF-8 - AFAIK, очень популярный побочный эффект совместимости с ASCII заключается в том, что размер строки ASCII, преобразованной в UTF-8, будет таким же. Другими словами, при написании текста с небольшим количеством символов ASCII или без него вы получаете все преимущества ASCII и только на несколько байт больше символов без ASCII. Кроме того, я считаю, что все официальные кодировки Unicode могут представлять все кодовые точки Unicode.

0 голосов
/ 22 июня 2009

Звучит довольно точно. Вы можете добавить, что UTF-8 обычно используется для хранения текстовых документов и обычно используется для передачи текста по проводам, потому что он компактен, в то время как UTF-16 также очень распространен, так как классы Java и .NET String используют UTF-16. потому что это эффективно.

...