- 配置情况: Win7 x64 英文版系统
- 软件平台:Java 8
在DOS环境下编译Java程序时,因为程序内有中文字符,提示Gp1252错误,百度之。结论是由于编码问题,需要把系统编码改为UTF-8 。方法如下:
- 在环境变量修改中 新建系统变量 变量名”JAVA_TOOL_OPTIONS 变量值为:-Dfile.encoding=UTF-8 修改完后重启电脑(网上有说重启命令行窗口就可生效,亲测不行。)。
- 添加完系统变量后运行如下程序段可以检测 如图
import java.io.ByteArrayOutputStream;
import java.io.OutputStreamWriter;
import java.nio.charset.Charset;
class TestEncodingType {
public static void main(String[] args) {
System.out.println("Default Charset=" + Charset.defaultCharset());
System.out.println("file.encoding=" + System.getProperty("file.encoding"));
System.out.println("Default Charset=" + Charset.defaultCharset());
System.out.println("Default Charset in Use=" + getDefaultCharSet());
}
private static String getDefaultCharSet() {
OutputStreamWriter writer = new OutputStreamWriter(new ByteArrayOutputStream());
String enc = writer.getEncoding();
return enc;
}
import java.io.OutputStreamWriter;
import java.nio.charset.Charset;
class TestEncodingType {
public static void main(String[] args) {
System.out.println("Default Charset=" + Charset.defaultCharset());
System.out.println("file.encoding=" + System.getProperty("file.encoding"));
System.out.println("Default Charset=" + Charset.defaultCharset());
System.out.println("Default Charset in Use=" + getDefaultCharSet());
}
private static String getDefaultCharSet() {
OutputStreamWriter writer = new OutputStreamWriter(new ByteArrayOutputStream());
String enc = writer.getEncoding();
return enc;
}
从此运行编译软件都会有一行提示。
至此,解决了unmappable character for encoding Gp1252 错误问题。但是无法正常显示中文字符。 这是因为Windows系统默认是unicode,对于不是Unicode编码的就会显示异常。通过更改系统区域设定,设定为本地区域即可解决。
版权声明:本文为neublackberry原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。