little-brother
|
Posted: Sun Mar 17, 2024 13:58 Post subject: |
|
|
Первая строка используется для определения порядка байт в utf16.
Для определения UTF8 используется весь файл, т.к. в вашем случае BOM-метки нет. Подозреваю, что определитель в каком то месте обнаруживает неверный с точки зрения utf8 последовательность бит, которая не может быть декодирована. Это может быть как косяк кода определителя, так и проблема в вашем файле.
Чтобы исключить второе - попробуйте сохранить файл как ANSI или UTF16, а потом обратно в utf8 и после этого бинарно сравнить исходный и полученный файл.
Для обнаружения места, где utf8 ломается можно на 1885 строке добавить
Code: |
bytes + 100 = 0;
MessageBoxA(0, (const char*)bytes, 0, 0);
|
и перекомпилировать плагин (см. Wiki). Это покажет место, где проверка не прошла.
Quote: |
Но ведь редакторы-то отрывали этот файл и
этот кусок БЕЗ проблем как верный UTF-8 без BOM
|
Так и плагин я думаю может открыть как UTF-8, если принудительно переключить. Проблема в том, что у вас получается не utf8 файл из-за неверного символа => плагин предполагает что это ANSI.
Можно наверно добавить общее количество ошибок при определении utf8-кодировки, чтобы если 1-2 неверных символа попали, то плагин продолжал считать, что все ок. |
|