使用Eclipse和Maven进行Java编码

我经常看到编码出现问题。 因此,我已经写下了这个指令集来执行所有必需的操作,以使工作(使用编码)。 这个集合与Eclipse有关,但它也将引导maven设置。

在java文件中使用斯堪的纳维亚字母时,编码问题最成问题(åäö,它们在运行时具有实际意义)。

一个示例案例是在java文件中包含一个常量变量,该变量包含一个scandic字母,它用于标识传入流中的值(以UTF-8表示)。

底层操作系统也可能是Windows,默认情况下使用cp1252。

例如以下代码:

@Test public void scandicTest() { System.out.println("scandics: åäö"); } 

当一切配置正确时(例如在eclipse中),运行此测试将产生:

 scandics: åäö 

但是如果你通过Maven(从命令行或在eclipse => mvn测试中)运行它,你将拥有:

 scandics:     

首先,需要在eclipse和maven pom.xml中更改编码,以正确读取和存储文件,并在保存文件/运行测试时使eclipse使用正确的编码。 但是,当Maven和生成的java代码处理传入流(编译并运行测试)时,即使读入的文件正确(包含scandic字母),java文件本身的常量值仍然会被破坏。

System Java仍然使用特定于操作系统的默认编码,即使其他所有内容都已正确设置。 因此,您无法在项目中配置所有内容,您也必须为OS-JVM执行此操作。

我将解释所需的所有编码步骤,即使已经有这个“常见”部分有多个答案(至少对于第2步)。 我的具体情况是解决第3步。

  1. 配置eclipse:

    • 打开:窗口>首选项
    • 在搜索字段中输入“encoding”
    • 会有很多条目,但首先选择’常规>工作区’
    • 找到“文本文件编码”并选择:其他> UTF-8
    • 您还需要/需要为所有 “常规>内容类型”设置编码
    • 从右侧面板中选择“文本”项(将打开文件类型列表),然后浏览所有类型 。 将其“默认编码”设置为“UTF-8”
    • 单击“更新”按钮以保留更改。
    • 您可能还需要对搜索中找到的所有其他条目和项目执行此操作。
    • 例如’Web> CSS文件>编码’| ISO 10646 / Unicode(UTF-8)
    • 完成所有设置后,Eclipse应该在编码时正常运行。
  2. 在maven.pom.xml中设置编码

      ...  UTF-8 UTF-8  ...  
    • 您可能还需要为所有插件设置编码。

        ...  UTF-8 ...   

      要么

           UTF-8 ...  ...    

      虽然我不确定后者是强制性的还是实际上会采用默认值。

  3. 配置操作系统

    • 您需要使用值-Dfile.encoding=UTF8设置环境变量JAVA_TOOL_OPTIONS

正如评论中所建议的,这里有一些转换文件的更多信息:
您应该注意,所有文件必须具有UTF-8编码才能使用。 如果您使用给定配置通过eclipse编辑所有内容,它们将为UTF-8。
如果您收到应使用代码处理的文件,则可能需要转换该文件。 您可以通过在eclipse中打开它并再次保存文件来简单地执行此操作(您可能需要添加和删除字符以启用保存)。
如果您可以使用NotePad ++,则会有一个用于转换文件的“编码”菜单。 转换文件时,scandics有时可能会损坏,因此您需要在转换后手动检查它们。

还有一件事。 保存在其他工具中的文件可能包含BOM。 (字节顺序标记)。 此“字符”是不可见的,例如,某些解析器无法读取包含此字符的XML文件。 您可以通过在eclipse中打开文件并将光标设置在文件中的第一个字符之前删除BOM标记,然后选择“退格”。 没有任何改变,但实际上删除了角色,然后文件正常工作。

NotePad可能会插入BOM标记,因此不要用它来编辑XML文件!