Как юникод распределяется для разных языков? - PullRequest
1 голос
/ 01 сентября 2009

Мне кажется, это самая запутанная проблема.

Как распознать начало нового персонажа?

Как распределяются кодовые точки?

Например, возьмем китайский иероглиф.

Какой диапазон кодовых точек им выделен,

и почему это так выделено, какая-то причина?

EDIT : Пожалуйста, опишите это своими словами, а не цитатой.

Или вы могли бы порекомендовать книгу, в которой систематически говорится о Юникоде, что, как вы думаете, прояснило (это самое важное).

Ответы [ 5 ]

5 голосов
/ 01 сентября 2009

Консорциум Unicode отвечает за распределение кодовых точек. Если вы хотите, чтобы новый символ или кодовая страница были выделены, вы можете подать заявку там. См. конвейер предложений для примеров.

3 голосов
/ 01 сентября 2009

Глава 2 спецификации Unicode определяет общую структуру Unicode, в том числе какие диапазоны выделяются для каких типов символов.

2 голосов
1 голос
/ 01 сентября 2009

Unicode - это стандарт, определенный Unicode Consortium . Спецификация определяет набор символов Unicode, Универсальный набор символов (UCS) и некоторые кодировки для кодирования этих символов, Форматы преобразования Unicode UTF-7 , UTF-8 , UTF-16 и UTF-32 .

Как распознать начало нового персонажа?

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

Как распределяются кодовые точки? Давайте возьмем китайский иероглиф для примера. Какой диапазон кодовых точек им выделен и почему он выделяется по какой-либо причине?

ПСК разделена на так называемые символьные плоскости . Первый - Базовая латиница (U + 0000 – U + 007F, закодированный как ASCII), второй - Приложение Latin-1 (U + 0080 – U + 00FF, закодированное как ISO 8859-1) и т. Д.

0 голосов
/ 01 сентября 2009

Лучше сказать Кодировка символов вместо Кодовая страница

Кодировка символов - это способ привязать некоторый символ к некоторым данным (а также наоборот!)

Как говорит Википедия:

Система кодирования символов состоит из кода, который связывает каждый символ из данного репертуара с чем-то другим, например последовательностью натуральных чисел, октетами или электрическими импульсами, для облегчения передачи данных (обычно чисел и / или текст) через телекоммуникационные сети или хранилище текста в компьютерах

Наиболее популярными кодировками символов являются ASCII , UTF-16 и UTF-8

ASCII

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

Как я уже сказал, ASCII использовался в старых операционных системах, таких как MS-DOS. Но ASCII не умер и все еще используется. Если у вас есть текстовый файл с 10 символами, а это 10 байтов, у вас есть файл ASCII!


UTF-16

В UTF-16 выделяется два байта символа. Таким образом, мы можем иметь 65536 различных символов в UTF-16!

Microsoft Windows использует UTF-16 для внутреннего использования.


UTF-8

UTF-8 - еще один популярный способ кодирования символов. он использует байты переменной длины (от 1 байта до 4 байтов) для символов. Он также совместим с ASCII, поскольку для символов ASCII используется 1 байт.

Большинство систем на базе Unix использует UTF-8


Языки программирования не зависят от кодовых страниц. Возможно, конкретная реализация языка программирования не поддерживает кодовые страницы (например, Turbo C ++)

Вы можете использовать любую кодовую страницу в современных языках программирования. У них также есть некоторые инструменты для преобразования кодовых страниц.

Существуют разные версии Unicode, такие как Utf-7, Utf-8, ... Вы можете прочитать о них здесь (рекомендуется!) И, возможно, для более формальных деталей здесь

...