我在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,问题已经消失,但我不知道为什么。
答案 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">
...