我正在尝试读取包含中文字符的.properties 文件。当我使用按键读取它们时,它们打印成“??????”。我正在编写 JSF 应用程序。我需要将此应用程序翻译成中文。在 JSF 的 UI 上,它正确地显示了所有字符。但在我的java代码中它显示为?????。我不知道为什么会这样。我还尝试了“笔记本电话”,还尝试了“\u88dc\u7fd2\u500b\u6848”,并尝试使用主要功能在控制台上打印它们,它以中文语言字符正确打印。我的属性文件的编码为 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 ?????
您需要任何其他代码,请确认。
最佳答案
多个问号通常来自
- 您有 utf8 编码的数据(很好)
-
SET NAMES latin1
有效(默认,但错误) - 该列已声明
CHARACTER SET latin1
(默认,但错误)
对于中文(或Emoji),需要使用MySQL的utf8mb4
.
治疗方法(为了 future INSERTs
):
- utf8 编码数据(良好)
-
mysqli_set_charset('utf8mb4')
(或者您的客户建立CHARACTER SET
所需的任何内容) - 检查列和/或表的默认值是否为
CHARACTER SET utf8mb4
- 如果您在网页上显示,
<meta...charset=utf-8>
应该在顶部附近。 (注意不同的拼写。)
关于java - 我正在尝试读取 .properties 文件,其中包含以 utf-8 编码的中文字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35273712/