将默认字符集更改为UTF-8。

4
我有一个使用Maven构建的Java项目。现在我需要支持UTF-8字符集。但是我不知道为什么默认字符集 (Charset.defaultCharset()) 总是 US-ASCII.。 我已经将Pom.xml配置更改为UTF-8(用于编码),并设置了-Dfile.encoding=UTF-8,但输出始终是 Unicode 字符的 "?"(例如:"Việt Nam" => Vi?t Nam)。 我在Ant builder上进行过检查,它的UTF-8字符是正确的。
这是我的Pom.xml:
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
                <outputEncoding>UTF-8</outputEncoding>
                <argLine>-Dfile.encoding=UTF-8</argLine>
                <encoding>${project.build.sourceEncoding}</encoding>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.2.1</version>
            <executions>
                <execution>
                    <id>cucumber</id>
                    <phase>test</phase>
                    <configuration>
                        <executable>src/scripts/cucumber.sh</executable>
                        <commandlineArgs>${host} ${port} ${profile}</commandlineArgs>
                    </configuration>
                    <goals>
                        <goal>exec</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>

谢谢您

更新 我的系统是

NetBeans 7.3.1 JDK 1.7 Mac OS 10.9.1

更新 我已经将IDE更改为Intelij IDEA,问题已经解决,但我不知道原因。

3个回答

2
<build> 之前尝试这个。
<project xmlns="...">
... 
<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <project.resources.sourceEncoding>UTF-8</project.resources.sourceEncoding>
</properties>

我曾尝试将 <project.resources.sourceEncoding>UTF-8</project.resources.sourceEncoding> 添加到属性中,但没有任何变化。 - Tuan Chau

1
这对我很有帮助。将以下内容添加到html或jsp中即可。
<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<html lang="en">
...

1

不确定我是否正确理解了你的问题,但似乎你不是在使用maven和源代码方面遇到问题,而是在运行程序和用户输入方面有问题,是吗?

如果是这样,你应该在运行程序的JVM上设置-Dfile.encoding=UTF-8,而不是在运行maven编译程序的JVM上设置。你粘贴的配置只确保maven和javac将你的源文件解释为UTF-8编码。

有关您的问题的更多详细信息,请参见此问题和答案

祝好, - martin


谢谢,我已经尝试过了,但是没有任何反应。我通过将IDE从Netbeans更改为IDEA来解决我的问题。 - Tuan Chau

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接