Java: unmappable character for encoding Gp1252错误 改为UTF-8 中文显示“???"

来源:互联网 发布:呵里巴巴淘宝网 编辑:程序博客网 时间:2024/05/16 05:28
  • 配置情况:  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;  
    } 
 
从此运行编译软件都会有一行提示。



至此,解决了unmappable character for encoding Gp1252 错误问题。但是无法正常显示中文字符。 这是因为Windows系统默认是unicode,对于不是Unicode编码的就会显示异常。通过更改系统区域设定,设定为本地区域即可解决。

阅读全文
0 0
原创粉丝点击