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

Fah*_*kar 3 console jsf utf-8 character-encoding

我正在使用JSF 2.0,我有文本字段作为

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

public void printMe() {
    System.out.println("first line==" + myValue + "==");
    System.out.println("second line==????????????????==");
}
Run Code Online (Sandbox Code Playgroud)

当我运行这个项目并输入????????????????文本框时,在IDE控制台中我看到如下.

INFO: first line==????????????????==
INFO: second line==????????????????==
Run Code Online (Sandbox Code Playgroud)

知道为什么会这样吗?

Bal*_*usC 8

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

这条线

System.out.println("My Data is " + fullName);
Run Code Online (Sandbox Code Playgroud)

打印到标准输出(标准输出).您需要将其配置为使用UTF-8.假设您正在使用Eclipse,则需要通过Window> Preferences> General> Workspace> Text File Encoding将stdout编码更改为UTF-8 .

在此输入图像描述

如果您正在使用Netbeans,我无法从头顶回答,请回答:希伯来语在netbeans中显示为问号,其中包含指向此Netbeans Wiki的链接,其中提到了以下内容:

要更改项目的语言编码:

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

也可以看看:


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

    res.setCharacterEncoding("UTF-8");
    res.setContentType("text/html;charset=utf-8");
Run Code Online (Sandbox Code Playgroud)

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