Не знаю. Попались такие файлы скриптов в разных источниках, значит их существование возможно.Skif_off писал(а):LonerD
UTF-16 LE без BOM? А зачем так делать?
CudaLister (просмотр исходников)
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Alextp
Добрался до компа и проверил AkelPad (UTF-16 LE узнал в Jota+, т.к. уже видел подобное): определяет правильно. Детект кодировки в Edit.c, если правильно понял - после анализа BOM и до проверки UTF-8 без BOM/не юникод.
Только не понял, что будет в случае суррогатных пар.
Добавлено спустя 3 минуты:
Забыл, по умолчанию размер буфера для распознавания 1024 байт.
Добрался до компа и проверил AkelPad (UTF-16 LE узнал в Jota+, т.к. уже видел подобное): определяет правильно. Детект кодировки в Edit.c, если правильно понял - после анализа BOM и до проверки UTF-8 без BOM/не юникод.
Только не понял, что будет в случае суррогатных пар.
Добавлено спустя 3 минуты:
Забыл, по умолчанию размер буфера для распознавания 1024 байт.
Приделал _простой_ детект utf16 по первым 10 байтам- четные 0 а нечетные ascii. Для BE наоборот.
CudaText: https://sourceforge.net/projects/cudate ... a_version/
Не уверен что надо опцию "размер буфера".
Добавлено спустя 11 минут:
Про Akel:
- он детектит ascii code по ренджу 1..126, хотя надо бы по (9,10,13,32..126)
- он детектит UTF16 по частоте LE chars, BE chars.
Если частота LE > частоты BE и больше порога- детект LE.
Это криво. Т.к. хотя бы 2 символа BE уже должны говорить что "это не LE"...
CudaText: https://sourceforge.net/projects/cudate ... a_version/
Не уверен что надо опцию "размер буфера".
Добавлено спустя 11 минут:
Про Akel:
- он детектит ascii code по ренджу 1..126, хотя надо бы по (9,10,13,32..126)
- он детектит UTF16 по частоте LE chars, BE chars.
Если частота LE > частоты BE и больше порога- детект LE.
Это криво. Т.к. хотя бы 2 символа BE уже должны говорить что "это не LE"...
А сколько CudaText/CudaLister используют для детекта? В смысле, если BOM нет. Весь файл анализируется?Alextp писал(а):Не уверен что надо опцию "размер буфера".
Не сразу дошло, в смысле - только печатные? В этом же цикле бинарные детектятся, ограничивать диапазон не резонно. Но их ведь немного, и всё уже в ОЗУ?Alextp писал(а):- он детектит ascii code по ренджу 1..126, хотя надо бы по (9,10,13,32..126)
Про LE/BE не понял, это ведь просто порядок байт и считается, что попадается чаще - \x00\xXX или \xXX\x00?
Кто то может подтвердить этот баг?
я у себя не повторил, тестил в Wine.
https://github.com/Alexey-T/CudaLister/issues/37
я у себя не повторил, тестил в Wine.
https://github.com/Alexey-T/CudaLister/issues/37
- CaptainFlint
- Сообщения: 6239
- Зарегистрирован: Вт дек 14, 2004 22:34
- Контактная информация: