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: