我正在尝试读入带有以utf-8编码的中文字符的.properties文件

时间:2016-02-08 15:52:12

标签: java mysql jsf utf-8 character-encoding

我正在尝试阅读带有中文字符的.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 ?????

您需要的任何其他代码,请确认。

2 个答案:

答案 0 :(得分:0)

多个问号通常来自

  • 你有utf8编码的数据(好)
  • SET NAMES latin1生效(默认,但错误)
  • 该列已声明CHARACTER SET latin1(默认,但错误)

对于中文(或表情符号),您需要使用MySQL的utf8mb4

治愈(未来INSERTs):

  • utf8编码数据(好)
  • 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