这令人沮丧。当我运行以下程序时,我在控制台中看到“Garci?a”而不是“García”,而如果我在Eclipse调试器中运行它,garciaString
包含“García”。这是怎么回事?是System.out中的问题?我是否必须专门配置它来打印Unicode? p>
package com.example.unicode;
public class UnicodeTest {
public static void main(String[] args) {
String garciaString = "Garci\u0301a";
System.out.println(garciaString);
}
}
编辑:我想也许控制台因字体而无法打印正确的值。但我也将“Garci?a”插入SQL数据库中。 JDBC + SQL是否处理Unicode?如果没有,我该如何处理INSERT INTO mydb (id, name) VALUES (1, "Garci\u0301a")
?
答案 0 :(得分:3)
这意味着Eclipse控制台不使用UTF-8编码。您必须在首选项中更改它。请参阅Getting Unicode output in Eclipse Console和this文章。
答案 1 :(得分:1)
Eclipse控制台/系统控制台等存在问题.Java在内部运行Unicode,但是输出有更多技巧。
通常,如果输出到文件 - 始终使用OutputStringWriter
ans指定正确的编码,但是当您打印到System.out时,请期望操作系统定义的行为。可以配置Eclipse控制台,使用Windows控制台这是一个更难的方法。您始终可以将标准输出定向到文件,并在unicode处理编辑器中查看结果,例如 gedit 或 Notepad ++