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

时间:2014-02-21 04:52:25

标签: java maven utf-8 character-encoding

我在java中有一个带有maven构建器的项目。现在我需要支持UTF-8字符集。我不知道为什么默认字符集(Charset.defaultCharset())总是US-ASCII. 我将Pom.xml配置更改为UTF-8(用于编码)并设置-Dfile.encoding=UTF-8 但是Unicode的字符输出总是“?”(例如"Việt Nam" => Vi?t Nam)。

我在Ant buidler上检查了它,它是正确的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 个答案:

答案 0 :(得分:2)

<build>

之前尝试此操作
<project xmlns="...">
... 
<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <project.resources.sourceEncoding>UTF-8</project.resources.sourceEncoding>
</properties>

答案 1 :(得分:1)

不确定我的问题是否正确,但您似乎没有maven和源代码的问题,但使用正在运行的程序和用户输入,对吗?

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

有关问题的详细信息,另请参阅this question and aswers

HTH, - 马丁

答案 2 :(得分:1)

这为我修好了。将以下内容添加到html或jsp中。

<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<html lang="en">
...