【问题标题】:Encoding of special properties in EclipseEclipse 中特殊属性的编码
【发布时间】:2017-09-03 20:35:09
【问题描述】:

我有一个在一些 java 和 jsp 页面中使用瑞典语的应用程序。
application.properties 文件中描述了瑞典语单词,这些名称将在应用程序中使用。

应用程序屏幕:

属性文件中定义的单词和我在jsp页面中看到的单词不同。

button.search=Sök

我尝试了设置中的所有内容类型。我仍然收到此错误,并且由于这些不同的词,我的应用程序无法在 Eclipse 中运行。

请任何人告诉我我需要在 Eclipse 中进行哪些更改才能使此应用程序正常工作

【问题讨论】:

    标签: java eclipse jsp utf-8 properties


    【解决方案1】:

    从您的屏幕截图看来,您的属性文件是用 UTF-8 编码的, 因此ö 用 2 个字节表示。

    但属性文件必须以 ISO-8859-1 编码(可选\uXXXX 转义),而不是 UTF-8 或其他任何编码。

    引用自class的javadoc java.util.Properties:

    load(Reader) / store(Writer, String) 方法加载和存储 一个简单的基于字符的流的属性 下面指定的面向行的格式。 load(InputStream)/ store(OutputStream, String) 方法的工作方式与 load(Reader)/store(Writer, String) 对,输入/输出除外 流以 ISO 8859-1 字符编码进行编码。 此编码中无法直接表示的字符 可以使用 Unicode 转义符来编写 [...]

    这意味着,您应该存储您的 application.properties 文件 采用 ISO-8859-1 编码。或者更好的是,你应该写

    button.search=S\u00F6k
    

    而不是

    button.search=Sök
    

    对所有非 ASCII 字符使用 \uXXXX 转义具有优势 您可以将文件存储在 UTF-8 或任何 ISO-8859-x 中,并且得到相同的 文件内容。

    【讨论】:

    • 我在 Application.properties 文件和 jsp 中使用了 ISO 8859-1 编码,它工作正常。现在这里还有一个问题。 JSP 将从 Application.properties 文件中获取值,并且将在 Action 类中使用相同的值。如果我检查操作类中的值,我会遇到与前面提到的相同的问题
    • 简而言之,我在从应用程序获取值时遇到了问题。 .java 文件中的属性。
    【解决方案2】:

    只需使用 Eclipse 的属性编辑器。它以唯一允许的字符编码 (ISO 8859-1) 保存 .properties 文件,并且 \u 转义不在该字符集中的字符。

    它确实有一个悬停显示来显示解码的代码点,但显示名称-值对表的视图会更好。

    【讨论】:

      【解决方案3】:

      也许更改工作区编码会有所帮助。转到 Window -> Preferences -> General -> Workspace 并将文本文件编码更改为 UTF8。

      【讨论】:

        【解决方案4】:

        改变你的eclipse默认内容类型:

        Window > Preferences > General > Content Types,将 UTF-8 设置为所有内容类型的默认编码。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多