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?
Se o banco for postgree tente usar a url de conexão assim:
jdbc:postgresql://seuip/seubanco?charSet=ISO8859-1
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
System.out.println(Locale.getDefault());
e diz o que que apareceu.
Isso acontece em todos os programas que você escreve?
Tetsuo
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....
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
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...)
[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].... =]
Então tente fazer esse mesmo programa em C++ :)