UTF-8 имеет символы переменной длины. Некоторые из них - один байт, некоторые - два и т.д. Все символы ASCII (первоначально 7-разрядные, в диапазоне от 0,127) кодируются одним байтом. Это означает, что файл, содержащий
Привет, мир
практически в любой западной кодировке уже действует UTF-8. Даже если вы попытаетесь преобразовать его, результат будет таким же. iconv
не будет добавлять метку порядка байтов.
Конечно, был ли файл, чтобы содержать, скажем,
Motoröl
это еще не будет UTF-8.
Notepad++ по умолчанию очень пессимистичен: если он не встречает метку порядка байтов в начале файла или, возможно, какие-либо последовательности байтов, которые выглядят как UTF-8, он обрабатывает файл как не-UTF-8.
Это поведение можно изменить в разделе «Настройки» → «Настройки» → «Новый документ» → «Кодировка». Отметьте «Применить к открытым файлам ANSI».
Чтобы проверить, есть ли в вашем файле какие-либо символы, которые будут меняться, используйте следующий скрипт Python 3:
#!/bin/env python3
with open("INSERT FILE NAME HERE", "rb") as f:
while 1:
byte_s = f.read(1)
if not byte_s:
break
byte = byte_s[0]
if byte > 127:
print("Got extended ASCII character")
Он будет читать ваш файл байт за байтом и проверять, больше ли байт 127. Если их нет, то еще раз: Ваш файл уже является допустимым UTF-8.