Есть ли язык (языки), который будет требовать три или более байтов на символ при кодировании с использованием UTF-8?Какие? - PullRequest
0 голосов
/ 08 сентября 2010

Обычно используемый ofc, Klingon не считается: -)

спасибо, ребята, позвольте мне запустить тесты willItFit ()

Хорошо, теперь я выяснил, что сохранение байтов с UTF-8 вызывает больше проблем, чем решение, еще раз спасибо

Ответы [ 4 ]

9 голосов
/ 08 сентября 2010

Символы, требующие 3 байта, начинаются с U + 0800 и всех последующих символов, так что это ОГРОМНОЕ количество потенциальных символов. Это включает восточноазиатские шрифты, такие как японский, китайский, корейский и тайский.

Полный список диапазонов сценариев можно найти в Данные блока Unicode . Только эти блоки могут быть представлены 1 или 2 байтами, символы из всех других блоков требуют 3 или 4 байта:

0000..007F Basic Latin
0080..00FF Latin-1 Supplement
0100..017F Latin Extended-A
0180..024F Latin Extended-B
0250..02AF IPA Extensions
02B0..02FF Spacing Modifier Letters
0300..036F Combining Diacritical Marks
0370..03FF Greek and Coptic
0400..04FF Cyrillic
0500..052F Cyrillic Supplement
0530..058F Armenian
0590..05FF Hebrew
0600..06FF Arabic
0700..074F Syriac
0750..077F Arabic Supplement
0780..07BF Thaana
07C0..07FF NKo
5 голосов
/ 08 сентября 2010

Вот и мы:

Итак, первые 128 символов (US-ASCII) нужен один байт. Следующие 1920 символам необходимо два байта для кодирования. Это включает в себя латинские буквы с диакритические знаки и символы из греческого, Кириллица, коптский, армянский, иврит, Арабский, сирийский и танский алфавиты. Три байта необходимы для остальных Базовая многоязычная плоскость (которая содержит практически все символы в общего пользования). Четыре байта необходимы для персонажи в других плоскостях Юникод, который включает менее распространенный CJK персонажи и различные исторические скрипты.

Подробнее:

http://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes, базовая многоязычная плоскость, коды от 0x8000.

Некоторые примеры: индийские сценарии, тайские, филиппинские сценарии, хирагана, катакана. Так что все сценарии Восточной Азии и некоторые другие.

2 голосов
/ 08 сентября 2010

Вам даже нужно три байта только для английского.Например, типографски правильный апостроф кодируется в UTF-8 как 0xE2 0x80 0x99, открывающие кавычки 0xE2 0x80 0x9C и закрывающие кавычки 0xE2 0x80 0x9D.Многоточие 0xE2 0x80 0xA6.И это даже не говорит о всех различных черточках, пробелах или знаках дюйма и фута.

«Трудно писать по-английски без помощи апострофа…»

0 голосов
/ 08 сентября 2010

Есть представления многих азиатских языков, которые используют более 2 байтов.Хотя это правда, что они, вероятно, не нужны, японский и корейский (по крайней мере) часто представлены в многобайтовой форме.

...