我使用的是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==????????????????==
知道为什么会这样吗?
答案 0 :(得分:7)
这是由使用错误的控制台编码引起的。
该行
System.out.println("My Data is " + fullName);
打印到标准输出(stdout)。您需要将其配置为使用UTF-8。假设您正在使用Eclipse,那么您需要通过 Window&gt;将stdout编码更改为UTF-8。偏好&gt;一般&gt;工作区&gt;文本文件编码。
如果您使用的是Netbeans,我无法从头顶回答,请转到此答案:hebrew appears as question marks in netbeans其中包含指向此Netbeans Wiki的链接,其中提及以下内容:
更改项目的语言编码:
- 在“项目”窗口中右键单击项目节点,然后选择“属性”。
- 在“来源”下,从“编码”下拉字段中选择一个编码值。
醇>
无关具体问题,过滤器中的那些行是不必要的
res.setCharacterEncoding("UTF-8");
res.setContentType("text/html;charset=utf-8");
它们默认为JSF2 / Facelets已经正确值。删除这些行。
答案 1 :(得分:-2)
如果数据来自数据库,请检查字段数据类型是否为nvarchar。