2011-02-10 4 views

ответ

2

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

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

Для истории и более подробного объяснения, обратитесь к этой статье нашим лидером Бесстрашный;) The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) или this wikipedia article on UTF-8 (имеет более подробную техническую информацию о допустимых/недопустимых комбинаций байт)

0

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

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

+0

Я сожалею, что является неправильным. UTF-8 - это система для преобразования символов в байты и наоборот, которая * кодирует * символы Unicode (аналогично, ASCII * кодирует * латинский алфавит, но это * не * алфавит); в программе-метафоре можно сказать, что «UTF-8 реализует интерфейс Unicode». Хотя UTF-8 является наиболее известным, есть другие - среди них UTF-7, UTF-16, UTF-32. Я рекомендую страницу Википедии в Юникоде и ссылки в моем ответе. http://en.wikipedia.org/wiki/Unicode – Piskvor

+0

Юникод - это _codepoints_, которые составляют символ юникода из байтовой кодировки с переменной длиной, которая называется _UTF-8_. – user4344

+0

@ user4344: Это упрощение, которое было бы абсолютно корректным, если бы была одна кодировка для правильного их использования, UTF-8. Unicode * codepoint * по существу является числом, которое представляет собой символ. Этот номер может быть закодирован в ** различных кодировках **, среди них UTF-7, UTF-8 и т. Д. Пожалуйста, прочитайте это, разница между * "is" * и * "представляет" * здесь весьма важна: http : //www.joelonsoftware.com/articles/Unicode.html – Piskvor

0

Это как @Piskvor describes.

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

В следующей таблице (32 бит) кодовой точки Юникода диапазонов байт последовательности происходит из этого документа:

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

Зависит ли положение байта от конечности процессора? – user4344

+0

@ user4344 - нет - источник: http://unicode.org/faq/utf_bom.html#utf8-2 – McDowell

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