Ответ 1
В файле нет ничего плохого. "ANSI как UTF-8" означает, что нет спецификации, но Notepad ++ определенно идентифицировал кодировку как UTF-8, анализируя шаблоны байтов. Я проверил это, создав в нем файл с русским, греческим и польским текстами и сохраняя его как UTF-8 без спецификации. Вот он:
# Russian
Следующая
# Greek
Επόμενη
# Polish
Więcej
Я сделал это в другом редакторе (EditPad Pro) и использовал шестнадцатеричный режим, чтобы убедиться, что спецификация не существует. Когда я открыл его в АЭС, он показал кодировку как "ANSI как UTF-8" , и все символы отображались правильно. Затем, еще в шестнадцатеричном режиме, я удалил первый байт первого русского символа. Когда я снова открыл его на АЭС, он показал кодировку как "ANSI" и отобразил части текста без ASCII как mojibake:
; Russian
¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ
; Greek
Επόμενη
; Polish
Więcej
Вернемся к EditPad, и на этот раз я добавил спецификацию, но не отредактировал кириллицу. На этот раз АЭС сообщила, что кодировка "UTF-8" и все отображаются правильно, за исключением первого русского символа, как показано ниже. "A1" - это шестнадцатеричное представление того, что должно было быть вторым байтом этого символа в UTF-8. Он отобразился в инвертированной цветовой схеме, чтобы указать на ошибку.
# Russian
A1ледующая
# Greek
Επόμενη
# Polish
Więcej
Подводя итог: в отсутствие спецификации, Notepad ++ ищет байты, которые не могут представлять символы ASCII, потому что их значения больше 127 (или 7F
hex). Если он найдет какой-либо, но все они соответствуют шаблонам, требуемым UTF-8, он декодирует файл как UTF-8 и сообщает кодировку в строка состояния как "ANSI как UTF-8" .
Но если он найдет хотя бы один байт, который не поддерживает линию UTF-8, он декодирует файл как "ANSI" , что означает однобайтную кодировку по умолчанию для базовой платформы. Если ваш файл был поврежден, это то, что вы увидите.
EDIT: хотя ваш файл действителен без него, вы можете добавить спецификацию, вручную записывая три байта "EF BB BF"
в самом начале файла, но должен быть лучший способ. Как вы создаете контент сейчас? Потому что это UTF-8, где-то есть, по крайней мере, один не-ASCII-символ; в противном случае АЭС сообщит об этом как "ANSI" .
Еще одна возможность рассмотреть: если вы имеете какое-либо влияние на процесс, который использует ваш CSV файл, возможно, вы можете настроить его на ожидание UTF-8 без спецификации. Технически любое программное обеспечение, которое может декодировать UTF-8 с помощью спецификации, но не без нее, нарушено. Консорциум Unicode фактически не рекомендует использовать спецификацию UTF-8, а не то, что кто-то слушает.