O UTF-8 tem caracteres de tamanho variável. Alguns são um byte, alguns dois, etc. Todos os caracteres ASCII (originalmente de 7 bits, variando de 0.127) são codificados com um byte. Isso significa que um arquivo contendo
Hello World
em praticamente qualquer codificação ocidental já é válida UTF-8 . Mesmo se você tentar convertê-lo, a saída será a mesma . iconv
não adicionará uma marca de ordem de byte.
É claro que o arquivo contém, digamos
Motoröl
ele não será válido UTF-8 ainda.
O Notepad ++ é, por padrão, muito pessimista: a menos que encontre uma marca de ordem de byte no início do arquivo ou talvez qualquer sequência de bytes que se pareça com UTF-8, ele trata o arquivo como não-UTF-8. / p>
Esse comportamento pode ser alterado em Configurações → Preferências → Novo documento → Codificação. Marque a opção "Aplicar aos arquivos ANSI abertos".
Para verificar se o seu arquivo realmente possui algum caractere que será alterado, use o seguinte script do 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")
Ele irá ler seu byte por byte e verificar se algum byte é maior que 127. Se não houver nenhum, então: novamente: Seu arquivo já é válido UTF-8.