Strings com acentos
Bom dia, galera...
Alguem sabe me dizer porque quando eu uso acentos no string ele fica com uma '?' no lugar do caracter? como faz pra isso nao acontecer?
:!: :!: :!: :!:
Rferreira
Curtidas 0
Respostas
Dadario
09/04/2009
Tenta:
Ou veja o Locale da sua máquina.
Ai você precisa setar para o da sua região para que o sistema pegue o encoding correto.
new String("não", "ISO-8859-1");GOSTEI 0
Rferreira
09/04/2009
[quote="dadario"]Tenta:
Ou veja o Locale da sua máquina.
Ai você precisa setar para o da sua região para que o sistema pegue o encoding correto.
Eu usei 'String Retorno = new String("", "ISO-8859-1")' e Ele diz que 'cannot resolve symbol: constructor String (java.lang.String,java.lang.String)'... e no doc tambem nao existe esse construtor pra classe string....
:arrow: :arrow: :arrow: :arrow:
new String("não", "ISO-8859-1");GOSTEI 0
Dadario
09/04/2009
Ops :oops: :oops:
Tenta este:
:idea: :idea: :idea:
new String("não".getBytes(), "ISO-8859-1");GOSTEI 0
Rferreira
09/04/2009
[quote="dadario"]Ops :oops: :oops:
Tenta este:
:idea: :idea: :idea:
Meu, isso não deu certo... isso eh um string que retorna outros strings para varias funcoes que no final geram o email.... sera que eu terei de fazer isso sempre que modificar um string? não tem uma forma de essa especificacao afetar globalmente a coisa??
new String("não".getBytes(), "ISO-8859-1");GOSTEI 0
Rferreira
09/04/2009
Caros colegas, preciso reabrir o tópico com voces, não consegui resolver sozinho ainda....
A sintaxe que o colega passou, como eu disse, nao funciona... Eu testei em outros sistemas, mas todos mostram estranho independente do charset como a seguir:
US-ASCII: mostra 'n?o'
UTF-8: mostra 'n?'
ISO-8859-1: mostra 'nÒo'
Esse problema acontece quando eu uso algum termo com acento no codigo fonte... ele vai errado no output e pra todo o resto, inclusive pro banco de dados... Eu vi em outras buscas que varios usuarios reclamam disso com resposta para alterar a configuração do banco de dados, porém o banco funciona normal em outras aplicações e o java da problema até dando print....
Alguem ja se deparou com isso antes?
GOSTEI 0
Cleuber_s
09/04/2009
Se o banco for postgree tente usar a url de conexão assim:
jdbc:postgresql://seuip/seubanco?charSet=ISO8859-1
GOSTEI 0
Cleuber_s
09/04/2009
Você poderia dar a configuração do seu ambiente? Digo, versão do JDK, idioma do sistema operacional, banco de dados, IDE, etc.
Executa também um
e diz o que que apareceu.
Isso acontece em todos os programas que você escreve?
Tetsuo
System.out.println(Locale.getDefault());
GOSTEI 0
Rferreira
09/04/2009
manoo, eu uso freebsd com java versao 1.4.1 blackdown compilado pra linux e emulado pra rodar em freebsd pra desenvolver e o retorno do comando foi 'en_US', mas tenho o mesmo problema (testei só de raiva) usando windows xp em portugues (nao to no trampo agora pra testar o comando tbm)..... tenho certeza que o banco de dados suporta os acentos e que o problema eh, na verdade, no java..... digo isso porque tambem faco coisas em php que funcionam normal alem do proprio phpmyadmin....
o banco eh mysql com charset latin1 (iso-blabla-bla que o colega falou mais acima) e nao uso IDE.... somente ultraedit.... mas o problema foi notado usando até o edit do windows....
GOSTEI 0
Ronaldtm
09/04/2009
Bom, uma coisa que já aconteceu comigo com essa questão de acentos é que a máquina que tinha o banco de dados (oracle) rodava em unix com locale em pt/BR, então funcionava legal. Depois, por engano, o pessoal mudou a configuração pra en/US, daí os acentos ficaram todos zoneados. Não sei se este é o problema (locale do banco), já que você disse que dá problema com qualquer string, mas talvez se você mudasse o locale pra pt_BR (tanto do banco quanto da JVM), talvez possa funcionar.
Ah, o teste no windows, você compilou nele, ou só rodou os binários compilados no BSD? Pode ser isso tb, o compilador interpretou o encode errado na hora de transformar pra unicode, sei lá.
Tetsuo
GOSTEI 0
Rferreira
09/04/2009
epaa... so acrescentando.... essa historia ainda nao acabou...
se você não compilar o código tambem com a variável setada (ex.: 'LANG=pt_BR javac *.java') não adianta setá-la somente na hora de usar e vice-versa.... precisa recompilar dinovo caso no ambiente onde o pacote foi compilado o ambiente nao seja pt_BR também....
heheheheh [b]java não é tão portável assim[/b].... =]
:!: :!: :!: :!: :!:
(eu fiz uma confusão aqui, ia acrescentar uma mensagem a anterior que dizia que funcionou, mas acabei editando e nao consegui voltar atras...)
GOSTEI 0
Ronaldtm
09/04/2009
[quote="rferreira"]se você não compilar o código tambem com a variável setada (ex.: 'LANG=pt_BR javac *.java') não adianta setá-la somente na hora de usar e vice-versa.... precisa recompilar dinovo caso no ambiente onde o pacote foi compilado o ambiente nao seja pt_BR também....
Deve ser por que é na hora da compilação que os caracteres do texto são interpretados e passados para Unicode. Por exemplo, um 'ã' em 'Cp1252' (o encoding padrão do meu eclipse), se compilado no meu computador (pt_BR), vai ser traduzido pra um valor unicode 0x0147 (sei lá). Mas, se eu pegar o mesmo arquivo fonte e compilar em um outro computador (en_US) que usa 'US-ASCII', que não tem acentos, a string vai aparecer como '¥', e traduzido pro unicode 0x1666. Depois da compilação, o unicode é que conta, se lá estiver 0x0147, vai aparecer 'ã', se estiver 0x1666, vai aparecer '¥' (ou vai mapear pra algum caracter existente no charset local).
Então, o que importa mesmo é o local de compilação, ora. O que eu não sei é como no editor aparece uma coisa, e o compilador entende outra. Tente... sei lá, abrir o arquivo no vi, ou dar cat pra ver se como é que o SO vê o arquivo (talvez o editor esteja salvando o arquivo usando um charset diferente do SO).
[quote="rferreira"]heheheheh [b]java não é tão portável assim[/b].... =]GOSTEI 0