Unicode字符(阿拉伯字母)在IDE控制台中显示为问号

时间:2012-11-19 10:55:32

标签: jsf utf-8 character-encoding console

我使用的是JSF 2.0,我的文本字段为

<h:form>
    <h:inputText value="#{myBean.myValue}" />
    <h:commandButton value="Submit" action="#{myBean.printMe()}" />
</h:form>

public void printMe() {
    System.out.println("first line==" + myValue + "==");
    System.out.println("second line==يشسيبشسيبشسيبشيس==");
}

当我运行此项目并在文本框中输入يشسيبشسيبشسيبشيس时,在IDE控制台中我会看到如下所示。

INFO: first line==????????????????==
INFO: second line==????????????????==

知道为什么会这样吗?

2 个答案:

答案 0 :(得分:7)

这是由使用错误的控制台编码引起的。

该行

System.out.println("My Data is " + fullName);

打印到标准输出(stdout)。您需要将其配置为使用UTF-8。假设您正在使用Eclipse,那么您需要通过 Window&gt;将stdout编码更改为UTF-8。偏好&gt;一般&gt;工作区&gt;文本文件编码

enter image description here

如果您使用的是Netbeans,我无法从头顶回答,请转到此答案:hebrew appears as question marks in netbeans其中包含指向此Netbeans Wiki的链接,其中提及以下内容:

  

更改项目的语言编码:

     
      
  1. 在“项目”窗口中右键单击项目节点,然后选择“属性”。
  2.   
  3. 在“来源”下,从“编码”下拉字段中选择一个编码值。
  4.   

另见:


无关具体问题,过滤器中的那些行是不必要的

    res.setCharacterEncoding("UTF-8");
    res.setContentType("text/html;charset=utf-8");

它们默认为JSF2 / Facelets已经正确值。删除这些行。

答案 1 :(得分:-2)

如果数据来自数据库,请检查字段数据类型是否为nvarchar。