Вопрос по переводу юникода - PullRequest
1 голос
/ 10 февраля 2011

Как байты с кодировкой UTF-8 переменной длины декодируются / переводятся в символы Юникода?

Ответы [ 4 ]

2 голосов
/ 10 февраля 2011

Каждый байт со значением выше 127 (двоичный 01111111, 7f hex) является частью многобайтового символа.

Таким образом, если первый бит равен 0, то готово - однобайтовый символ,Если нет, то это байт продолжения - биты в байте также определяют количество байтов в этом символе (технически возможно до 6-байтовых символов, но UTF-8 определен только для 1-4 байтовых символа).

Историю и более подробное объяснение см. В этой статье нашего бесстрашного лидера;) Абсолютный минимум Каждый разработчик программного обеспечения абсолютно, положительно должен знать о Unicode и наборах символов (Нет оправданий!) , или эта статья в Википедии о UTF-8 (содержит больше технических подробностей о действительных / недействительных байтовых комбинациях)

1 голос
/ 10 февраля 2011

я думаю, что это здесь

0 голосов
/ 11 февраля 2011

Это как @ Писквор описывает .

Алгоритмы кодирования / декодирования UTF-8 описаны в RFC 3629 .

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

Char. number range  |        UTF-8 octet sequence
   (hexadecimal)    |              (binary)
--------------------+---------------------------------------------
0000 0000-0000 007F | 0xxxxxxx
0000 0080-0000 07FF | 110xxxxx 10xxxxxx
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
0 голосов
/ 10 февраля 2011

UTF-8 - это Unicode, поэтому перевода нет.Если вы имеете в виду «Как я вижу символы не ASCII на экране, когда я отображаю строку Unicode», вам необходимо убедиться, что у вас установлен и используется шрифт с поддержкой Unicode.

Моя компания использует это шрифт.

...