java - 我正在尝试读取 .properties 文件,其中包含以 utf-8 编码的中文字符

标签 java mysql jsf utf-8 character-encoding

我正在尝试读取包含中文字符的.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/

相关文章:

java - JSF 修改上下文后将其放回

java - 将逻辑类链接到我的 gui 类 java

php - SQL高效的计划生成算法

mysql - 慢更新查询

mysql - 设置/更改 Rails id 自动增量值

java - 如何将下拉列表的选定值从xhtml页面传递到jsf bean?

forms - 如何创建 h :selectOneRadio with options of a java list (JSF)?

c# - 使用 java xml api 将 xml 文档保存到文件

java - 当系统上安装多个 JRE 时,使用哪个 rt.jar?

java - 如何获取 TreeMap 中的条目子集?