Java 使用 Eclipse 和 Maven 编码
Java encoding with Eclipse and Maven
我经常看到编码出现问题。因此,我写下了这个指令集来执行所有需要的操作,以使事情正常进行(使用编码)。
此设置与 Eclipse 相关,但它也将指导 Maven 设置。
在 java 文件中使用斯堪的纳维亚字母时,编码问题最为严重(åäö,它们在 运行 时间具有实际意义)。
一个例子是在 java 文件中有一个常量变量,它包含一个 scandic 字母,它用于识别来自传入流的值(在 UTF-8 中)。
另外底层的OS可能是Windows,他们默认使用cp1252。
例如以下代码:
@Test
public void scandicTest() {
System.out.println("scandics: åäö");
}
当一切配置正确时(例如在 eclipse 中),运行此测试将产生:
scandics: åäö
但是,如果您 运行 通过 Maven(从命令行或在 eclipse => mvn test 中)执行此操作,您将拥有:
scandics: ���
首先,需要在 eclipse 和 maven 中更改编码 pom.xml 以正确读取和存储文件,并使 eclipse 在保存文件时使用正确的编码 / 运行宁测试。
然而,当 Maven 和生成的 java 代码处理传入流(编译 & 运行 测试)。
系统 Java 仍然使用 OS 特定的默认编码,即使其他所有设置都正确。出于这个原因,您不能在项目中配置所有内容,您也必须为 OS-JVM 进行配置。
我将解释为此所需的所有编码步骤,即使这个 "common" 部分已经有多个答案(至少对于第 2 步)。我的特殊情况是解决第 3 步。
配置eclipse:
- 打开:Window > 首选项
- 在搜索字段中输入 'encoding'
- 会有很多条目,但首先 select 'General > Workspace'
- 找到 'Text file encoding' 和 select: 其他 > UTF-8
- 您还want/need设置编码也所有 'General > Content Types'
- Select 'text' 右侧面板中的项目(将打开文件类型列表),然后浏览 所有类型 。将他们的 'Default encoding' 设置为 'UTF-8'
- 单击 'update' 按钮以保存更改。
- 您可能还需要对通过搜索找到的所有其他 条目和项目执行此操作。
- 例如'Web > CSS Files > Encoding' | ISO 10646/Unicode(UTF-8)
- 当所有设置完成后,Eclipse 应该能够正确处理编码。
设置编码maven.pom.xml
<project>
...
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
...
</project>
您可能还需要为所有插件设置编码。
<plugin>
...
<configuration>
<encoding>UTF-8</encoding>
...
</configuration>
</plugin>
或
<plugin>
<executions>
<execution>
<configuration>
<encoding>UTF-8</encoding>
...
</configuration>
...
</execution>
</executions>
</plugin>
虽然我不确定后者是强制性的还是实际上会采用默认值。
配置OS
- 您需要设置环境变量
JAVA_TOOL_OPTIONS
值为 -Dfile.encoding=UTF8
如评论中所建议,这里有一些关于转换文件的更多信息:
您应该注意,所有文件都必须具有 UTF-8 编码才能工作。如果您使用给定的配置通过 eclipse 编辑所有内容,它们将是 UTF-8。
如果你收到一个你应该用你的代码处理的文件,你可能需要转换它。您可以通过在 eclipse 中打开它并再次保存文件来简单地做到这一点(您可能需要添加和删除一个字符才能保存)。
如果您可以使用 NotePad++,则有一个用于转换文件的 'encoding' 菜单。
转换文件时,scandics有时可能会损坏,因此您需要在转换后手动检查它们。
还有一件事。在其他工具中保存的文件可能有 BOM。 (字节顺序标记)。此 'character' 是不可见的,例如某些解析器无法读取包含此内容的 XML 文件。
您可以通过在 eclipse 中打开文件并将光标设置在文件中的第一个字符之前来删除 BOM 标记,然后按 'backspace' 键一次。什么都没有改变,但角色实际上被删除了,然后文件就可以工作了。
NotePad 可能会插入 BOM 标记,因此请勿使用它来编辑 XML 个文件!
我经常看到编码出现问题。因此,我写下了这个指令集来执行所有需要的操作,以使事情正常进行(使用编码)。 此设置与 Eclipse 相关,但它也将指导 Maven 设置。
在 java 文件中使用斯堪的纳维亚字母时,编码问题最为严重(åäö,它们在 运行 时间具有实际意义)。
一个例子是在 java 文件中有一个常量变量,它包含一个 scandic 字母,它用于识别来自传入流的值(在 UTF-8 中)。
另外底层的OS可能是Windows,他们默认使用cp1252。
例如以下代码:
@Test
public void scandicTest() {
System.out.println("scandics: åäö");
}
当一切配置正确时(例如在 eclipse 中),运行此测试将产生:
scandics: åäö
但是,如果您 运行 通过 Maven(从命令行或在 eclipse => mvn test 中)执行此操作,您将拥有:
scandics: ���
首先,需要在 eclipse 和 maven 中更改编码 pom.xml 以正确读取和存储文件,并使 eclipse 在保存文件时使用正确的编码 / 运行宁测试。 然而,当 Maven 和生成的 java 代码处理传入流(编译 & 运行 测试)。
系统 Java 仍然使用 OS 特定的默认编码,即使其他所有设置都正确。出于这个原因,您不能在项目中配置所有内容,您也必须为 OS-JVM 进行配置。
我将解释为此所需的所有编码步骤,即使这个 "common" 部分已经有多个答案(至少对于第 2 步)。我的特殊情况是解决第 3 步。
配置eclipse:
- 打开:Window > 首选项
- 在搜索字段中输入 'encoding'
- 会有很多条目,但首先 select 'General > Workspace'
- 找到 'Text file encoding' 和 select: 其他 > UTF-8
- 您还want/need设置编码也所有 'General > Content Types'
- Select 'text' 右侧面板中的项目(将打开文件类型列表),然后浏览 所有类型 。将他们的 'Default encoding' 设置为 'UTF-8'
- 单击 'update' 按钮以保存更改。
- 您可能还需要对通过搜索找到的所有其他 条目和项目执行此操作。
- 例如'Web > CSS Files > Encoding' | ISO 10646/Unicode(UTF-8)
- 当所有设置完成后,Eclipse 应该能够正确处理编码。
设置编码maven.pom.xml
<project> ... <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> </properties> ... </project>
您可能还需要为所有插件设置编码。
<plugin> ... <configuration> <encoding>UTF-8</encoding> ... </configuration> </plugin>
或
<plugin> <executions> <execution> <configuration> <encoding>UTF-8</encoding> ... </configuration> ... </execution> </executions> </plugin>
虽然我不确定后者是强制性的还是实际上会采用默认值。
配置OS
- 您需要设置环境变量
JAVA_TOOL_OPTIONS
值为-Dfile.encoding=UTF8
- 您需要设置环境变量
如评论中所建议,这里有一些关于转换文件的更多信息:
您应该注意,所有文件都必须具有 UTF-8 编码才能工作。如果您使用给定的配置通过 eclipse 编辑所有内容,它们将是 UTF-8。
如果你收到一个你应该用你的代码处理的文件,你可能需要转换它。您可以通过在 eclipse 中打开它并再次保存文件来简单地做到这一点(您可能需要添加和删除一个字符才能保存)。
如果您可以使用 NotePad++,则有一个用于转换文件的 'encoding' 菜单。
转换文件时,scandics有时可能会损坏,因此您需要在转换后手动检查它们。
还有一件事。在其他工具中保存的文件可能有 BOM。 (字节顺序标记)。此 'character' 是不可见的,例如某些解析器无法读取包含此内容的 XML 文件。 您可以通过在 eclipse 中打开文件并将光标设置在文件中的第一个字符之前来删除 BOM 标记,然后按 'backspace' 键一次。什么都没有改变,但角色实际上被删除了,然后文件就可以工作了。
NotePad 可能会插入 BOM 标记,因此请勿使用它来编辑 XML 个文件!