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

19

Quando tento salvar um arquivo de texto com texto que não seja em inglês no Bloco de Notas, tenho 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 alguma compatibilidade com versões anteriores (com versões ou aplicativos mais antigos) e não me importo 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 na linguagem Notepad, Unicode é UTF-16 (Little Endian), Unicode Big Endian é UTF-16 (Big Endian) e UTF-8 está bem UTF-8.

    
por Ashwin Nanjappa 22.07.2009 / 04:58

6 respostas

19

Não sei. Qual é 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-8 se concentra em minimizar o tamanho do byte para representação de caracteres do conjunto ASCII (representação de tamanho variável: cada caractere é representado em 1 a 4 bytes e caracteres ASCII cabem em 1 byte). Como Joel coloca:

“Look at all those zeros!” they said, since they were Americans and they were looking at English text which rarely used code points above U+00FF. Also they were liberal hippies in California who wanted to conserve (sneer). If they were Texans they wouldn’t have minded guzzling twice the number of bytes. But those Californian wimps couldn’t bear the idea of doubling the amount of storage it took for strings

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

  • O UTF-16 é um compromisso, usando 2 bytes na maior parte do tempo, mas expandindo para 2 * 2 bytes por caractere para representar determinados 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!)

    
por 22.07.2009 / 05:09
4

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

Ambos irão lidar com todos os possíveis caracteres Unicode, por isso não deve fazer diferença na compatibilidade.

    
por 22.07.2009 / 05:08
3

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 sem controle. Nesta tabela, x representa os 8 bits mais baixos do valor Unicode, y representa os 8 bits mais altos seguintes e z representa os bits mais altos que isso.

    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
por 22.07.2009 / 06:00
1

"Unicode" é outro termo para "UTF-16", que é uma codificação do conjunto de caracteres Unicode em dezesseis bits por caractere. O UTF-8 codifica em oito bits por caractere.

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

    
por 22.07.2009 / 05:03
1

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

    
por 22.07.2009 / 05:06
0

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

    
por 05.01.2015 / 15:50