我在这里的第一篇文章。 好吧,我正在构建一个简单的应用程序,通过控制台(cmd和终端)进行消息传递,只是为了学习,但我在阅读器和用字符集写文本时遇到了问题。
这是我发送邮件的初始代码,Main.CHARSET设置为UTF-8:
Scanner teclado = new Scanner(System.in,Main.CHARSET);
BufferedWriter saida = new BufferedWriter(new OutputStreamWriter(new BufferedOutputStream(cliente.getOutputStream()),Main.CHARSET)));
saida.write(nick + " conectado!");
saida.flush();
while (teclado.hasNextLine()) {
saida.write(nick +": "+ s);
saida.flush();
}
接收代码:
try (BufferedReader br = new BufferedReader(new InputStreamReader(servidor,Main.CHARSET))){
String s;
while ((s = br.readLine()) != null) {
System.out.println(s);
}
}
当我发送“olá”或类似“ÁàçÇõÉ”(巴西葡萄牙语)的东西时,我在Windows cmd上只有空白区域(未在linux中测试过)。
所以我测试了以下代码:
Scanner s = new Scanner(System.in,Main.CHARSET);
System.out.println(s.nextLine());
输入“olá”,打印“ol”。
问题是,如何读取控制台以便正确读取输入,并可以传输给其他用户并正确显示给他。
答案 0 :(得分:0)
如果您只想在文本文件中输出葡萄牙语,那将很容易。
您唯一需要关心的是通过UTF-8编码显示。
你可以使用一种非常简单的方式,比如
String text = "olá";
FileWriter fw = new FileWriter("hello.txt");
fw.write(text);
fw.close();
然后用记事本或任何支持UTF-8
的文本工具打开hello.txt或者您必须将工具的默认字体更改为UTF-8。
如果你想在控制台上显示它,我认为pvg已经回答你。
好的,似乎你仍然对此感到困惑。这是一个你可以尝试的简单代码。
Scanner userInput = new Scanner(System.in);//type olá plz
String text = userInput.next();
System.out.println((int)text.charAt(2));//you will see output int is 63
char word = 'á'; // this word covert to int is 225
int a = 225;
System.out.println((int)word);// output 225
System.out.println((char)a); // output á
那么,结论是什么?
如果你用葡萄牙语使用console to tpye然后抓住它,你会完全得到不同的词,而不是一个胡言乱语。