eXeL@B —› Программирование —› utf-16 recognition |
Посл.ответ | Сообщение |
|
Создано: 11 июля 2012 08:10 · Личное сообщение · #1 посоны, а есть какой-то способ отличить сабж от бинарного мусора? вот например для utf-8 это можно сделать довольно легко - там после первого ключевого байта всегда должны идти символы с 10хххххх битами. А для юникода? Предположим даже, что есть BOM маркер, но 2 байта это как-то маловато. Может по статистике как-то? там же явно должен быть один и тот-же язык + примеси ANSI символов. Не? |
|
Создано: 11 июля 2012 08:33 · Поправил: drone · Личное сообщение · #2 |
|
Создано: 11 июля 2012 11:21 · Поправил: MNV · Личное сообщение · #3 |
|
Создано: 12 июля 2012 03:39 · Личное сообщение · #4 |
|
Создано: 13 июля 2012 05:51 · Личное сообщение · #5 > 1. старший байт (второй в случае Little Endian) обычно повторяется, или хотя бы из близкого диапазона > (English = 00, Cyrillic = 04), ну это если не учитывать CJK... > 2. codepoints из диапазона D800-DFFF могут встречаться только парами (surrogate pairs). Ну да, я как-то так примерно и сделал. 16-ти битные картинки на ура проходят такую эвристику, помогает смотреть количество одинаковых вордов подряд =) |
|
Создано: 13 июля 2012 09:52 · Личное сообщение · #6 ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. |
eXeL@B —› Программирование —› utf-16 recognition |