将Java输出的UTF-8转换为实际字符?

3
在Java中,我该如何将UTF-8输出为真正的字符串?
     我们

     \u6211\u4eec

        String str = new String("\u6211\u4eec"); 
       System.out.println(str); // still ouput \u6211\u4eec, but I expect 我们 to be an output

-----
String tmp = request.getParameter("tag");
        System.out.println("request:"+tmp);
        System.out.println("character set :"+request.getCharacterEncoding());       
        String tmp1 = new String("\u6211\u4eec");       
        System.out.println("string equal:"+(tmp.equalsIgnoreCase(tmp1)));
        String tag = new String(tmp);       
        System.out.println(tag);

request:\u6211\u4eec
character set :UTF-8
string equal:false
\u6211\u4eec

从输出结果来看,请求中的值和tmp1的字符串值是相同的,但为什么equalsIgnoreCase的输出结果是false


2个回答

1
Java字符串采用UTF-16编码。我认为你的代码没有问题,可能是由于控制台无法正确显示字符串的内容导致的问题。
如果你在使用eclipse,可以在这里将控制台编码更改为UTF-8。
Eclipse > Preferences > General > Workspace > Text file encoding

1

你尝试过只显示其中一个吗?比如:

   String str = new String("\u6211"); 
   System.out.println(str);

我敢打赌,你在创建字符串时出了问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接