Byte Encodings and Strings

Se uma matriz de bytes contiver texto não Unicode, pode converter o texto para Unicode com um dos métodos de construção String. Inversamente, pode converter um String objecto numa matriz de bytes de caracteres não-Unicode com o método String.getBytes. Ao invocar um destes métodos, especifica-se o identificador de codificação como um dos parâmetros.

O exemplo que se segue converte caracteres entre UTF-8 e Unicode. O UTF-8 é um formato de transmissão para Unicode que é seguro para sistemas de ficheiros UNIX. O código fonte completo para o exemplo está no ficheiro StringConverter.java.

O programa StringConverter começa por criar um programa String contendo caracteres Unicode:

String original = new String("A" + "\u00ea" + "\u00f1" + "\u00fc" + "C");

Quando impresso, o String nomeado original aparece como:

AêñüC

Para converter o String objecto para UTF-8, invocar o método getBytes e especificar o identificador de codificação apropriado como parâmetro. O método getBytes devolve um conjunto de bytes no formato UTF-8. Para criar um objecto String a partir de um conjunto de bytes não Unicode, invocar o String construtor com o parâmetro de codificação. O código que faz estas chamadas está incluído num bloco try, no caso de a codificação especificada não ser suportada:

O StringConverter programa imprime os valores no utf8Bytes e defaultBytes arrays para demonstrar um ponto importante: O comprimento do texto convertido pode não ser o mesmo que o comprimento do texto de origem. Alguns caracteres Unicode traduzem-se em bytes únicos, outros em pares ou trigémeos de bytes.

O método printBytes exibe as matrizes de bytes invocando o método byteToHex, que é definido no ficheiro-fonte, UnicodeFormatter.java. Aqui está o método printBytes método:

A saída do printBytes segue o método. Note-se que apenas o primeiro e o último bytes, os caracteres A e C, são os mesmos em ambas as arrays:

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *