javanoob Posted November 23, 2007 at 02:37 PM Report Share #149656 Posted November 23, 2007 at 02:37 PM Boas pessoal, Ajudem-me aqui com uma noobice: Quando faço System.out.println("Olá"); isto, no output da consola em ambiente Windows Xp aparece-me um caracter estranho no lugar do "á". Como faço para aparecer "Olá" correctamente? Obrigado! Link to comment Share on other sites More sharing options...
Gurzi Posted November 23, 2007 at 02:53 PM Report Share #149657 Posted November 23, 2007 at 02:53 PM Penso que tens que usar o caracter correspondente na tabela ASCII. Esse caracter não faz parte do charset que qualquer compilador utiliza. Penso eu de que... :nono1: Link to comment Share on other sites More sharing options...
javanoob Posted November 23, 2007 at 02:58 PM Author Report Share #149658 Posted November 23, 2007 at 02:58 PM Penso que tens que usar o caracter correspondente na tabela ASCII. Esse caracter não faz parte do charset que qualquer compilador utiliza. Penso eu de que... :nono1: Mas, no Linux funciona! Link to comment Share on other sites More sharing options...
magician Posted November 23, 2007 at 03:05 PM Report Share #149662 Posted November 23, 2007 at 03:05 PM Isso é do enconding do Ficheiro Java, o encoding std do linux é diferente do windows logo tens de usar um encoding como UTF8. I haven’t lost my mind; it’s backed up on DVD somewhere! Link to comment Share on other sites More sharing options...
javanoob Posted November 23, 2007 at 03:13 PM Author Report Share #149666 Posted November 23, 2007 at 03:13 PM Isso é do enconding do Ficheiro Java, o encoding std do linux é diferente do windows logo tens de usar um encoding como UTF8. Como é que se vê o encoding de um ficheiro em ambientes Windows? Link to comment Share on other sites More sharing options...
magician Posted November 23, 2007 at 03:37 PM Report Share #149669 Posted November 23, 2007 at 03:37 PM Não faço ideia lol já a algum tempo que apenas uso windows para jogar (pouco) e fazer mais 2 ou 3 coisas. I haven’t lost my mind; it’s backed up on DVD somewhere! Link to comment Share on other sites More sharing options...
falco Posted November 23, 2007 at 06:07 PM Report Share #149699 Posted November 23, 2007 at 06:07 PM Claro que em GNU/Linux funciona! GNU/Linux suporta encodings de forma decente... A m$ à muito tempo que cagou na interface de CLI do window$. Link to comment Share on other sites More sharing options...
Betovsky Posted November 23, 2007 at 06:10 PM Report Share #149702 Posted November 23, 2007 at 06:10 PM O problema está na consola do Windows. Esta usa ainda um encoding da altura do DOS. http://en.wikipedia.org/wiki/CP437 "Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !" Sign on a computer system consultant's desk Link to comment Share on other sites More sharing options...
javanoob Posted November 23, 2007 at 11:10 PM Author Report Share #149835 Posted November 23, 2007 at 11:10 PM Então e como é que posso resolver este problema? É que assim, mesmo que programe e compile em Linux. a coisa depois não funciona em Windows... Epah, deve haver por aí pessoal com o mesmo problema, como é que resolveram? Bom fim-de-semana! Link to comment Share on other sites More sharing options...
garmg Posted November 23, 2007 at 11:29 PM Report Share #149839 Posted November 23, 2007 at 11:29 PM Cinge-te ao belo do 7bit ascii e não terás problemas. Isso exclui éàç e por aí föra :-) P.S: Qualquer das formas, nem sempre este será o desejavel procedimento, portanto, poderás sempre tentar um export LANG=pt_PT.UTF-8 no Linux, que deverá ser compatível com o windows. 10 Useful Links Link to comment Share on other sites More sharing options...
magician Posted November 23, 2007 at 11:54 PM Report Share #149843 Posted November 23, 2007 at 11:54 PM Mas o problema não está no linux mas sim naquela coisa que o windows tem e que teimam em chamar consola. O problema é mesmo do "consola" do windows e não do encoding. Já tinha tido problemas com o windows a nível gráfico agora está é nova ai ai I haven’t lost my mind; it’s backed up on DVD somewhere! Link to comment Share on other sites More sharing options...
falco Posted November 24, 2007 at 10:11 AM Report Share #149873 Posted November 24, 2007 at 10:11 AM Vamos lá explicar umas coisas a estes utilizadores de GNU/Linux de Domingo: O GNU/Linux está a apresntar bem o output desejado, o window$ está a apresentar mal. Se há um problema, ou um defeito, certamente que não é o no GNU/Linux. Quase todas as distribuições de GNU/Linux já usam UTF-8 como o encoding por omissão quer nas consolas, quer em todo o sistema de ficheiros, quer nas aplicações. Não é por isso preciso configurar as consolas dessas distribuições para fazerem o que já fazem, é que para além de perda de tempo, é digamos, estupido!? É que assim, mesmo que programe e compile em Linux. a coisa depois não funciona em Windows... Funcionou, apenas não funcionou como esperavas... Agora já conheces mais essa deficiência no window$, já a podes ter em conta. Ninguém na sua perfeita saúde mental programa para a consola do window$, normalmente o que se faz, é: * meter o terminal do window$, ou outro terminal qualquer (não a consola, nem sua shell de CLI), a aceder a sistemas remotos com consolas e outras aplicações decentes (normalmente isso significa um *nix, como o GNU/Linux); * instalar o cygwin e utilizar assim a consola de GNU/Linux no window$; Link to comment Share on other sites More sharing options...
javanoob Posted November 24, 2007 at 02:21 PM Author Report Share #149924 Posted November 24, 2007 at 02:21 PM Então e assim por curiosidade, como posso mudar o encoding da consola do Windows? Link to comment Share on other sites More sharing options...
falco Posted November 24, 2007 at 03:27 PM Report Share #149939 Posted November 24, 2007 at 03:27 PM Se puderes é no registo do window$, mas duvido que possas. Link to comment Share on other sites More sharing options...
Betovsky Posted November 24, 2007 at 03:57 PM Report Share #149944 Posted November 24, 2007 at 03:57 PM Então e assim por curiosidade, como posso mudar o encoding da consola do Windows? Não podes, acho eu. Mas mesmo se poderes é muito mais fácil simplesmente escreveres para a consola no enconding dela. "Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !" Sign on a computer system consultant's desk Link to comment Share on other sites More sharing options...
javanoob Posted November 24, 2007 at 05:01 PM Author Report Share #149961 Posted November 24, 2007 at 05:01 PM Não acredito que não possa programar para Windows com caracteres do tipo "á", tem de haver alguma coisa que está a falhar aqui. Link to comment Share on other sites More sharing options...
Betovsky Posted November 24, 2007 at 05:49 PM Report Share #149978 Posted November 24, 2007 at 05:49 PM Tipo... Podes. Tens é usar um encoding diferente. O default do Java é o UTF-8 se não me engano. Mas podes usar outros. O encoding da consola do Windows, a CP437, aceita caracteres do tipo "á". "Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !" Sign on a computer system consultant's desk Link to comment Share on other sites More sharing options...
falco Posted November 24, 2007 at 09:50 PM Report Share #150056 Posted November 24, 2007 at 09:50 PM Eu acho que é code page 850, ou então, Windows-1252, que é incompatível com o ISO 8859-15 (apesar de ser um superset de ISO 8859-1). É suposto no entanto que se deixe de usar estes encodings a favor do Unicode (UTF-8 e outros). O Windows-1252, não é um standard (é proprietário da m$) e por isso levanta alguns problemas de compatibilidade com outros sistemas e também tem algumas limitações. Link to comment Share on other sites More sharing options...
Knitter Posted November 29, 2007 at 06:04 PM Report Share #151183 Posted November 29, 2007 at 06:04 PM Tens alguns problemas, primeiro, a consola do windows não suporta UT8, seja de que forma for. Segundo, a JVM quando inicia vai obter o seu encoding ao sistema, neste caso ao Windows, ficas assim com a JVM a pensar que tudo o que queres escrever tem de estar em CP1252 enquanto que na verdade, para a consola, tem de ser em 850. Se o objectivo é escrever para consolas windows podes simplesmente dizer que encoding usar: public static void main(String args[]) { String str = "Acentuação problemática"; try { Writer out = new BufferedWriter(new OutputStreamWriter(System.out, "Cp850")); out.write(str); out.flush(); out.close(); } catch (Exception e) { //ignore } } A classe OutputStreamWriter permite dizer em que encoding queres escrever, ao construirmos uma stream desse tipo podemos indicar o encoding no qual vamos queres transformar os nosso caracteres. No entanto este código funciona apenas para a consola do Windows, se tentares usar o teu programa noutra consola com um encoding diferente voltas a ter o problema inicial. Esta é uma solução que limita muito a portabilidade, mas com alguma alteração ao código pode ser tornada mais portável, talvez até completamente portável, mas não arrisco dizer isso sem confirmar. Já agora, eu coloquei o texto com acentuação mas as recomendações de java é que todo o texto seja colocado com os códigos UTF para evitar problemas com o encoding dos ficheiros de código. Espero que sirva. www.sergiolopes.eu Link to comment Share on other sites More sharing options...
javanoob Posted November 30, 2007 at 04:25 AM Author Report Share #151311 Posted November 30, 2007 at 04:25 AM Já agora, eu coloquei o texto com acentuação mas as recomendações de java é que todo o texto seja colocado com os códigos UTF para evitar problemas com o encoding dos ficheiros de código. E já agora, que códigos UTF são esses? Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now