使用Eclipse和Maven的Java编码
我经常看到编码出现问题。因此,我写下了这个指令集,以执行所有必要的操作,从而使事情正常工作(使用编码)。 此集合与Eclipse相关,但也将使用maven设置进行指导 在java文件中使用斯堪的纳维亚字母(åäö,它们在运行时具有实际意义)时,编码问题最为棘手 一个例子是在java文件中有一个常量变量,它包含一个scandic字母,用于从传入流中标识一个值(在UTF-8中) 此外,底层操作系统可能是Windows,默认情况下使用cp1252 例如,以下代码:使用Eclipse和Maven的Java编码,java,maven,encoding,character-encoding,Java,Maven,Encoding,Character Encoding,我经常看到编码出现问题。因此,我写下了这个指令集,以执行所有必要的操作,从而使事情正常工作(使用编码)。 此集合与Eclipse相关,但也将使用maven设置进行指导 在java文件中使用斯堪的纳维亚字母(åäö,它们在运行时具有实际意义)时,编码问题最为棘手 一个例子是在java文件中有一个常量变量,它包含一个scandic字母,用于从传入流中标识一个值(在UTF-8中) 此外,底层操作系统可能是Windows,默认情况下使用cp1252 例如,以下代码: @Test public void
@Test
public void scandicTest() {
System.out.println("scandics: åäö");
}
当所有配置都正确时(例如在eclipse中),运行此测试将产生:
scandics: åäö
但是,如果您通过Maven(从命令行或eclipse=>mvn测试)运行它,您将有:
scandics: ���
首先,需要在eclipse和maven pom.xml中更改编码,以便正确读取和存储文件,并且eclipse在保存文件/运行测试时使用正确的编码。
但是,当Maven和生成的java代码处理传入流(编译并运行测试)时,即使读入的文件是正确的(包含scandic字母),java文件本身的常量值仍然会损坏
系统Java仍然使用特定于操作系统的默认编码,即使其他所有设置都正确。由于这个原因,您不能在项目中配置所有内容,您还必须在OS-JVM中进行配置。我将解释所有需要的编码步骤,即使这个“公共”部分已经有多个答案(至少对于步骤2)。我的特殊情况是解决步骤3
- 打开:窗口>首选项
- 在搜索字段中键入“encoding”
- 将有很多条目,但首先选择“常规>工作区”
- 找到“文本文件编码”并选择:其他>UTF-8
- 您还希望/需要为所有常规>内容类型设置编码
- 从右侧面板中选择“文本”项(将打开文件类型列表),然后浏览所有类型。将其“默认编码”设置为“UTF-8”
- 单击“更新”按钮以保留更改
- 您可能还需要对搜索中找到的所有其他条目和项目执行此操作
- 例如,“Web>CSS文件>编码”| ISO 10646/Unicode(UTF-8)
- 当所有这些都设置好后,Eclipse应该能够正确地进行编码
<project>
...
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
...
</project>
...
UTF-8
UTF-8
...
- 您可能还需要为所有插件设置编码
<plugin> ... <configuration> <encoding>UTF-8</encoding> ... </configuration> </plugin>
或... UTF-8 ...
虽然我不确定后者是否是强制性的,或者它是否会采取默认的做法UTF-8 ... ...
- 您需要使用值
-Dfile.encoding=UTF8设置环境变量
JAVA\u TOOL\u OPTIONS
您应该注意,所有文件都必须使用UTF-8编码才能正常工作。如果您使用给定的配置通过eclipse编辑所有内容,它们将作为UTF-8。
如果您收到一个应该用代码处理的文件,您可能需要转换该文件。您只需在eclipse中打开该文件并再次保存即可(您可能需要添加和删除一个字符以启用保存)。
如果您可以使用记事本++,则有一个“编码”菜单用于转换文件。 转换文件时,scandics有时可能会损坏,因此您需要在转换后手动检查它们 还有一件事。保存在其他工具中的文件可能具有BOM表。(字节顺序标记)。此“字符”是不可见的,例如,某些解析器无法读入包含此字符的XML文件。 您可以通过在eclipse中打开文件并将光标设置在文件中第一个字符之前,然后在“backspace”中单击tab键来删除BOM表标记。没有任何变化,但角色实际被删除,文件随后工作
记事本可能会插入BOM表标记,因此不要将其用于编辑XML文件 我将解释所有需要的编码步骤,即使对于这个“公共”部分已经有多个答案(至少对于步骤2)。我的特殊情况是解决步骤3
- 打开:窗口>首选项
- 在搜索字段中键入“encoding”
- 将有很多条目,但首先选择“常规>工作区”
- 找到“文本文件编码”并选择:其他>UTF-8
- 您还希望/需要为所有常规>内容类型设置编码
- 从右侧面板中选择“文本”项(将打开文件类型列表),然后浏览所有类型。将其“默认编码”设置为“UTF-8”
- 单击“更新”按钮以保留更改
- 您可能还需要对搜索中找到的所有其他条目和项目执行此操作
- 例如,“Web>CSS文件>编码”| ISO 10646/Unicode(UTF-8)
- 当所有这些都设置好后,Eclipse应该能够正确地进行编码
<project>
...
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
...
</project>
...
UTF-8
UTF-8
...
- 您可能还需要为所有插件设置编码
<plugin> ... <configuration> <encoding>UTF-8</encoding> ... </configuration> </plugin>
或... UTF-8 ...
虽然我不确定后者是否是强制性的,或者它是否会采取默认的做法UTF-8 ... ...
- 你需要