Quando tento salvar um arquivo de texto com texto não em inglês no bloco de notas, obtenho a opção de escolher entre Unicode , Unicode Big Endian e UTF-8 . Qual é a diferença entre esses formatos?
Supondo que eu não queira nenhuma compatibilidade com versões anteriores (com versões ou aplicativos mais antigos do SO) e não me importe com o tamanho do arquivo, qual desses formatos é melhor?
(Suponha que o texto possa estar em idiomas como chinês ou japonês, além de outros idiomas.)
Nota: Das respostas e comentários abaixo, parece que no jargão do bloco de notas o Unicode é UTF-16 (Little Endian), o Unicode Big Endian é o UTF-16 (Big Endian) e o UTF-8 é bem o UTF-8.
Respostas:
Não sei. O que é melhor: uma serra ou um martelo? :-)
Unicode não é UTF
Há um pouco no artigo que é um pouco mais relevante para o assunto em questão:
O UTF-32 foca na exaustividade e na representação de comprimento fixo, usando 4 bytes para todos os caracteres. É a tradução mais direta, mapeando diretamente o ponto de código Unicode para 4 bytes. Obviamente, não é muito eficiente em tamanho.
UTF-16 é um compromisso, usando 2 bytes na maioria das vezes, mas expandindo para 2 * 2 bytes por caractere para representar certos caracteres, aqueles não incluídos no Plano Multilíngue Básico (BMP).
Consulte também o mínimo absoluto que todo desenvolvedor de software deve saber absolutamente, positivamente sobre Unicode e conjuntos de caracteres (sem desculpas!)
fonte
Para idiomas europeus, o UTF-8 é menor. Para as línguas orientais, a diferença não é tão clara.
Ambos manipularão todos os caracteres Unicode possíveis, portanto, isso não fará diferença na compatibilidade.
fonte
Existem mais codificações de caracteres Unicode do que você imagina.
UTF 8
A codificação UTF-8 é de largura variável, variando de 1 a 4 bytes, com os bits superiores de cada byte reservados como bits de controle. Os bits iniciais do primeiro byte indicam o número total de bytes usados para esse caractere. O valor escalar do ponto de código de um caractere é a concatenação dos bits que não são de controle. Nesta tabela,
x
representa os 8 bits mais baixos do valor Unicode,y
representa os próximos 8 bits mais altos ez
representa os bits mais altos que isso.fonte
"Unicode" é outro termo para "UTF-16", que é uma codificação do conjunto de caracteres Unicode em dezesseis bits por caractere. UTF-8 o codifica em oito bits por caractere.
Nos dois casos, qualquer estouro é alocado para outros 16 ou oito bits.
fonte
A única vantagem real de arquivos pequenos, como arquivos de texto, é o tamanho resultante. UTF-8 geralmente produz arquivos menores. Mas essa diferença pode ser menos pronunciada no texto em chinês / japonês.
fonte
Em uma palavra, Unicode é um conjunto de caracteres , enquanto Unicode Big Endian e utf-8 são duas codificações , que são usadas para armazenar caracteres como 01 em um computador.
fonte