it-swarm-pt.tech

Unicode, Unicode Big Endian ou UTF-8? Qual é a diferença? Qual formato é melhor?

Quando tento salvar um arquivo de texto com texto diferente do inglês no Bloco de notas, tenho a opção de escolher entre nicode, nicode Big Endian e TF-8. Qual é a diferença entre esses formatos?

Supondo que eu não queira qualquer compatibilidade com versões anteriores (com versões mais antigas do sistema operacional ou aplicativos) e eu não se preocupam com o tamanho do arquivo, qual desses formatos é melhor?

(Suponha que o texto pode estar em idiomas como chinês ou japonês, além de outros idiomas.)

Nota: Pelas respostas e comentários abaixo, parece que no jargão do Notepad, Unicode é UTF-16 (Little Endian), Unicode Big Endian é UTF-16 (Big Endian) e UTF-8 é bem UTF -8.

19
Ashwin Nanjappa

Não sei. O que é melhor: uma serra ou um martelo? :-)

nicode não é UTF

Há uma parte no artigo que é um pouco mais relevante para o assunto em questão:

  • UTF-8 concentra-se em minimizar o tamanho do byte para a representação de caracteres do conjunto ASCII (representação de comprimento variável: cada caractere é representado em 1 a 4 bytes, e ASCII caracteres todos se encaixam 1 byte). Como Joel coloca:

“Olha todos esses zeros!” disseram, já que eram americanos e estavam olhando um texto em inglês que raramente usava pontos de código acima de U + 00FF. Também eram hippies liberais na Califórnia que queriam conservar (zombaria). Se eles fossem texanos, não teriam se importado em engolir o dobro do número de bytes. Mas aqueles fracos californianos não suportavam a ideia de dobrar a quantidade de armazenamento necessário para as cordas

  • O UTF-32 concentra-se 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 termos de tamanho.

  • UTF-16 é um meio-termo, 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).

Veja também O Mínimo Absoluto que Todo Desenvolvedor de Software Absolutamente, Positivamente Deve Saber Sobre Unicode e Conjuntos de Caracteres (Sem Desculpas!)

19
Jason Baker

Para idiomas europeus, UTF-8 é menor. Para as línguas orientais, a diferença não é tão nítida.

Ambos lidarão com todos os caracteres Unicode possíveis, portanto, não deve haver diferença na compatibilidade.

4
Mark Ransom

Existem mais codificações de caracteres Unicode do que você imagina.

  • UTF 8

    A codificação UTF-8 tem 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 aquele caractere. O valor escalar do ponto de código de um personagem é 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 e z representa os bits mais altos.

    Unicode              Byte1     Byte2     Byte3     Byte4
    U+0000-U+007F       0xxxxxxx            
    U+0080-U+07FF       110yyyxx  10xxxxxx          
    U+0800-U+FFFF       1110yyyy  10yyyyxx  10xxxxxx    
    U+10000-U+10FFFF    11110zzz  10zzyyyy  10yyyyxx  10xxxxxx
    
  • UCS-16
  • UCS-16BE
  • UCS-16LE

  • UTF-16
  • UTF-16BE
  • UTF-16LE

  • UTF-32
  • UTF-32-BE
3
Brad Gilbert

"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.

Em ambos os casos, qualquer estouro é alocado para outros 16 ou oito bits.

1
John Saunders

A única vantagem real com arquivos pequenos como arquivos de texto é o tamanho do arquivo resultante. UTF-8 geralmente produz arquivos menores. Mas essa diferença pode ser menos pronunciada com o texto chinês/japonês.

1
zildjohn01

Em um Word, Unicode é um conjunto de caracteres , enquanto Unicode Big Endian e utf-8 são dois codificações , que são usadas para armazenar caracteres como 01's em um computador.

0
thuzhf