我正在尝试阅读带有中文字符的.properties文件。当我用键读取它们时,它们就像??????一样打印。我正在编写JSF应用程序。我需要用中文翻译这个应用程序。在JSF的UI上,它正确显示所有字符。但在我的java代码中,它显示为?????。我不知道为什么。我也试过"手提电话"并且还尝试过" \ u88dc \ u7fd2 \ u500b \ u6848"并尝试在具有主要功能的控制台上打印它们,它正确地在中文lang字符中打印。我的属性文件有编码utf-8。
为了澄清你对它的困惑,我能够用中文显示控制台,如
String str="Алексей";
String str="\u88dc\u7fd2\u500b\u6848";
System.out.println("direct output: "+str);
在psvm中正常工作。但在阅读后使用属性文件显示???。e 希望现在很清楚。 我的数据库也收到了?适用于实际的中文字符。
请帮忙。如果需要任何其他澄清,请确认,以便我可以更新我的行。
这是我的代码,用于读取属性文件,该文件返回相关区域设置的包。
FacesContext context = FacesContext.getCurrentInstance();
bundle = context.getApplication().getResourceBundle(context, "hardvalue");
在此之后我将调用它来访问值:
bundle.getString("tutorsearch.header"); // results in ?????
您需要的任何其他代码,请确认。
答案 0 :(得分:0)
多个问号通常来自
SET NAMES latin1
生效(默认,但错误)CHARACTER SET latin1
(默认,但错误)对于中文(或表情符号),您需要使用MySQL的utf8mb4
。
治愈(未来INSERTs
):
mysqli_set_charset('utf8mb4')
(或无论您的客户需要什么来建立CHARACTER SET
)CHARACTER SET utf8mb4
<meta...charset=utf-8>
应该在顶部附近。 (注意拼写不同。)答案 1 :(得分:0)
添加以下标记已解决了我的问题。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
感谢All