2014-02-18 4 views
0

ASCII использует 8-битную систему. Каждому символу присваивается уникальное значение ASCII. Но UNICODE использует 32 или 64-разрядное представление. Так как символы назначаются там? Использует ли C/C++ UNICODE?Как ASCII, как символы распознаются двоичными значениями в UNICODE?

+0

http://www.cprogramming.com/tutorial/unicode.html – Sanoob

+0

http: // kunststube.net/encoding – deceze

+1

Это не по теме (не о программировании, кроме последнего вопроса, к которому правильный ответ «может быть») слишком широк и основан на неправильных предположениях (ASCII - это 7-битная система и Unicode as такие как не присваивают двоичные значения, присваивают кодовые номера), а кодировки передачи Unicode используют 8, 16 или 32 бита на символ (никогда 64). –

ответ

0

От this

Для преобразования ASCII в Unicode, принимать все коды ASCII один байт, а нулевой продлить их до 16 бит. Это должна быть версия Unicode символов ASCII.

Unicode в C/C++ посмотреть в this

0

Как UTF-8 Работы


Single-Byte Character

Для одного байта символа (т.е. все 128 символов в обычной таблице ASCII), самый старший бит - 0. Присутствие 0 в наиболее значимом бите всегда указывает, что байт является однобайтовым символом.

0XXXXXXX

Пример

символов 33 восклицательный знак ("!").

Оно представлено в двоичной системе, как

00100001.

Обратите внимание, что самый старший бит 0. Так мы знаем, как интерпретировать байт как однобайтовый символ из 128-символьной таблицы ASCII.


двухбайтовая Последовательность

В последовательности 2-байтовой, наиболее значимый бит обоего байт установлена ​​в 1. Присутствие 1 в наиболее значимом бите всегда сигнализирует многобайтную последовательность.

В первом байте, то два наиболее значимые биты устанавливаются в 1, а третий установлен в 0.

Во втором байте самый старший бит установлен на 1, а второй установлен на 0.

1-й байт:110XXXXX

2-й байт:10XXXXXX

Остальные 11 битов (помеченные как X) затем объединяются. Целое число, которое они представляют, равно символьному индексу.

Пример

161 символов это вверх-вниз восклицательным ("¡").

Оно представлено в двоичной системе, как

1100010 10100001

Если исключить биты маркировки позиции последовательности UTF-8:

11000010XXX00010

10100000XX100001

и конкатенировать t он остальные биты, мы остались с:

00010 100001

который является двоичным представлением 161.


Три-Байт Последовательность

В последовательности 3-байтового, самый старший бит всех трех байтов установлен на 1. Опять же, наличие 1 в наиболее значимом бите всегда сигнализирует многобайтную последовательность.

В первом байте, то три наиболее значимые биты устанавливаются в 1, а четвертый установлен в 0.

Во втором и третьем байтах самый старший бит установлен на 1, а второй установлен на 0.

1-й байт:1110XXXX

2-й байт:10XXXXXX

3-й байт:10XXXXXX

Оставшиеся 16 бит (помеченные как X) затем объединяются. Целое число, которое они представляют, равно символьному индексу.

Пример

символов 2308 является "ऄ".

Оно представлено в двоичной системе, как

11100000 10100100 10000100

Если исключить биты маркировки позиции последовательности UTF-8:

11100000XXXX0000

10100100XX100100

10000100XX000100

и сцепить оставшиеся биты, мы остались с:

0000 100100 000100

который является двоичным представлением 2308.


Последовательность четырехбайтового

Образец продолжается до 4-байтовой последовательности в том же что двухбайтная последовательность расширена до 3-байтовой последовательности. Основное различие заключается в том, что в первом байте четыре значащих бита установлены в 1, а пятый - 0.

первый байт:11110XXX

второй байт:10XXXXXX

третьи байты:10XXXXXX

четвёртых байты:10XXXXXX

Индекс символов сконструирован, как указано выше, из оставшихся 21 бит.

+0

Большое спасибо Jesse.Does C/C++ использовать это представление UNICODE? Или эти языки ограничены только ASCII? – Sankar

0

Юникод в первую очередь определяет символы по кодовой точке. Это просто гигантская таблица, в которой указывается, что буква «A» (LATIN CAPITAL LETTER A) имеет кодовую точку U + 0041, «ท» (THAI CHARACTER THO THAHAN) имеет кодовую точку U + 0E17 и т. Д. И т. Д. ,

Существует несколько кодировок Unicode , которые кодируют эти кодовые точки в физические биты. UCS-2 была ранним кодированием, которое теперь заменено UTF-16. UTF-32 существует, но UTF-8 стал стандартным кодированием Unicode де-факто. Каждая кодировка работает по-разному и имеет разные плюсы и минусы, подробно прочитайте их спецификацию, если вы заинтересованы. Наиболее очевидным отличием является то, что UTF-8 использует минимум из 8 бит на символ, UTF-16 минимум из 16 бит и 32 бита UTF-32.

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