Чтобы получить лучший ответ, мне нужно ответить на два вопроса:
- Какова точная кодовая точка рассматриваемого символа (вашего "а")?
- Какова точная последовательность байтов в вашем файле вокруг сомнительной области?
Я собираюсь сделать предположение здесь: вы говорите, что символ - это первое, что есть в файле ("добавляется вначало строки ") и что вы вернулись, это в блоке арабских презентационных форм B.Последний символ арабских форм представления B, который, как ни странно, не имеет ничего общего с арабским языком, - это U + FFEF или знак порядка байтов (BOM).Обычно он появляется в начале файлов в кодировке UTF-16 или UTF-32 и идентифицирует «конечность» кодирования (независимо от того, является ли файл кодированным UTF-16LE или UTF-16BE, также для UTF-32).Однако, как правило, он отсутствует в данных UTF-8, поскольку UTF-8 не имеет понятия «порядок следования байтов».Тем не менее, некоторые мёртвые программы Windows будут вставлять его туда, а затем иметь дополнительную опцию «UTF-8 без BOM».(Затем используется спецификация для идентификации файла, который, вероятно, закодирован в UTF-8.) Я предполагаю, что у вас есть спецификация в ваших данных, и ваша программа читает ее и передает вам.
ЕСЛИ это ваша проблема, и ваш файл действительно закодирован в UTF-8, вы сможете найти следующую последовательность байтов в начале файла: EF BB BF
- это UTF-8представление U + FFEF.