kwa*_*wah 8 java eclipse character-encoding
我正在努力让Eclipse正确阅读中文字符,我不确定我的错误在哪里.
具体来说,在从控制台读取一串中文(简体或繁体)并输出它之间的某处,它会出现乱码.即使输出大量混合文本(英文/中文字符),它似乎只会改变汉字的外观.
我把它剪切到下面的测试示例,并明确地用我认为在每个阶段发生的事情注释它 - 注意我是一名学生,非常想确认我的理解(或其他):)
public static void main(String[] args) {
try
{
boolean isRunning = true;
//Raw flow of input data from the console
InputStream inputStream = System.in;
//Allows you to read the stream, using either the default character encoding, else the specified encoding;
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
//Adds functionality for converting the stream being read in, into Strings(?)
BufferedReader input_BufferedReader = new BufferedReader(inputStreamReader);
//Raw flow of outputdata to the console
OutputStream outputStream = System.out;
//Write a stream, from a given bit of text
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream, "UTF-8");
//Adds functionality to the base ability to write to a stream
BufferedWriter output_BufferedWriter = new BufferedWriter(outputStreamWriter);
while(isRunning) {
System.out.println();//force extra newline
System.out.print("> ");
//To read in a line of text (as a String):
String userInput_asString = input_BufferedReader.readLine();
//To output a line of text:
String outputToUser_fromString_englishFromCode = "foo"; //outputs correctly
output_BufferedWriter.write(outputToUser_fromString_englishFromCode);
output_BufferedWriter.flush();
System.out.println();//force extra newline
String outputToUser_fromString_ChineseFromCode = "???"; //outputs correctly
output_BufferedWriter.write(outputToUser_fromString_ChineseFromCode);
output_BufferedWriter.flush();
System.out.println();//force extra newline
String outputToUser_fromString_userSupplied = userInput_asString; //outputs correctly when given English text, garbled when given Chinese text
output_BufferedWriter.write(outputToUser_fromString_userSupplied);
output_BufferedWriter.flush();
System.out.println();//force extra newline
}
}
catch (Exception e) {
// TODO: handle exception
}
}
Run Code Online (Sandbox Code Playgroud)
样本输出:
> ???
foo
???
之謂甚
> oaea
foo
???
oaea
> mixed input - English: fubar; Chinese: ???;
foo
???
mixed input - English: fubar; Chinese: 之謂甚;
>
Run Code Online (Sandbox Code Playgroud)
在这个Stack Overflow帖子上看到的内容完全符合我在Eclipse控制台中看到的以及在Eclipse调试器中看到的内容(查看/编辑变量值时).通过Eclipse调试器手动更改变量值会导致代码依赖于该值的行为,就像我通常期望的那样,这表明文本读取IN的方式是一个问题.
我试图/缓冲流扫描仪的多种不同的组合[阅读器|作家] S等读取和输出,有和没有明确的字符类型,虽然这不是特别系统地进行,并可以很容易地错过了一些东西.
我试图将Eclipse环境设置为尽可能使用UTF-8,但我想我可能错过了一两个地方.请注意,控制台将正确输出硬编码的中文字符.
非常感谢任何有关此事的协助/指导:)
控制台似乎没有正确读取输入。我相信这是一个描述您的问题和解决方法的链接。
http://paranoid-engineering.blogspot.com/2008/05/getting-unicode-output-in-eclipse.html
简单答案:尝试在 eclipse.ini 中设置环境变量 -Dfile.encoding=UTF-8 。(在为整个 Eclipse 启用此功能之前,您可以尝试在该程序的调试配置中设置它,看看它是否有效)
该链接有更多建议
| 归档时间: |
|
| 查看次数: |
5248 次 |
| 最近记录: |