Eu tenho uma String com um caractere "ñ" e tenho alguns problemas com ela. Eu preciso codificar essa String para codificação UTF-8. Eu tentei dessa maneira, mas não funciona:
byte ptext[] = myString.getBytes();
String value = new String(ptext, "UTF-8");
Como codifico essa string para utf-8?
{In,Out}putStream{Read,Writ}ers
fazer isso por elas. Eu quero saber porque?Respostas:
String
objetos em Java usam a codificação UTF-16 que não pode ser modificada.A única coisa que pode ter uma codificação diferente é a
byte[]
. Portanto, se você precisar de dados UTF-8, precisará de umbyte[]
. Se você possui umString
que contém dados inesperados, o problema está em um local anterior que converteu incorretamente alguns dados binários em umString
(ou seja, estava usando a codificação incorreta).fonte
byte[]
, mas não faz sentidoString
(a menos que a codificação seja UTF-16; nesse caso, faz sentido, mas ainda assim informações desnecessárias).String objects in Java use the UTF-16 encoding that can't be modified.
Você tem uma fonte oficial para esta cotação?Que tal usar
fonte
myString.getBytes(Charsets.UTF_8)
, e bytes -> corda:new String(myByteArray, Charsets.UTF_8)
.StandardCharsets.UTF_8
. Disponível em Java 1.7+.No Java7 você pode usar:
Isso tem a vantagem de
getBytes(String)
não declararthrows UnsupportedEncodingException
.Se você estiver usando uma versão Java mais antiga, poderá declarar as constantes charset:
fonte
String value = new String(myString);
.Use em
byte[] ptext = String.getBytes("UTF-8");
vez degetBytes()
.getBytes()
usa a chamada "codificação padrão", que pode não ser UTF-8.fonte
Uma Java String sempre é codificada internamente em UTF-16 - mas você realmente deve pensar assim: uma codificação é uma maneira de traduzir entre Strings e bytes.
Portanto, se você tiver um problema de codificação, quando tiver o String, será tarde demais para corrigir. Você precisa corrigir o local em que você cria essa String a partir de um arquivo, banco de dados ou conexão de rede.
fonte
Você pode tentar assim.
fonte
Em um momento, passei por esse problema e consegui resolvê-lo da seguinte maneira
primeiro eu preciso importar
Então eu tive que declarar uma constante para usar
UTF-8
eISO-8859-1
Então eu poderia usá-lo da seguinte maneira:
fonte
e, se você quiser ler um arquivo de texto com o código "ISO-8859-1":
fonte
Eu usei o código abaixo para codificar o caractere especial, especificando o formato de codificação.
fonte
Um rápido guia passo a passo sobre como configurar a codificação padrão do NetBeans UTF-8. Como resultado, o NetBeans criará todos os novos arquivos na codificação UTF-8.
Guia passo a passo de codificação padrão do NetBeans UTF-8
Vá para a pasta etc no diretório de instalação do NetBeans
Edite o arquivo netbeans.conf
Encontre a linha netbeans_default_options
Adicione -J-Dfile.encoding = UTF-8 entre aspas dentro dessa linha
(exemplo
netbeans_default_options="-J-Dfile.encoding=UTF-8"
:)Reinicie o NetBeans
Você define a codificação padrão do NetBeans UTF-8.
Suas netbeans_default_options podem conter parâmetros adicionais dentro das aspas. Nesse caso, adicione -J-Dfile.encoding = UTF-8 no final da sequência. Separe-o com espaço de outros parâmetros.
Exemplo:
aqui está o link para mais detalhes
fonte
Isso resolveu meu problema
fonte