关于Java GBK编码的不可映射字符 (编码方式)的理解

发布于:2022-12-24 ⋅ 阅读:(390) ⋅ 点赞:(0)

声明本文基于以window记事本编写Hello Java程序,并在命令行窗口(或终端)运行的方式展开介绍,如若不是此类环境出现的问题,请自行跳过。


        初学者在初次编写Java程序进行编译时,由于本身代码中注释含有中文(或以其他形式包含中文),在命令行窗口编译程序后会出现如下报错(以Hello Java为例):

源代码:

public class HelloJava{//创建一个HelloJava类
	public static void main(String args[]){
	System.out.println("你好,Java!");
	}
}

终端运行报错:

 

 这里是由于国际版本JDK在编译时首先获得操作系统的file.encoding参数(保存了操作系统默认的编码格式GBK),当我们不加设置就编译时,相当于使用了参数:javac -encoding gbk XX.java,而文本文档保存方式为UTF-8(或其他编码方式)当然就会出现不兼容的情况。

查看当前文本文档的编码方式在窗口右下角:

 采用非UNICODE的GBK编码形式 编码UNICODE 的UTF-8文件,当然行不通,为此有两种简单的解决方案:

 方法一:更改记事本编码类型

        另存为 ANSI 编码文件。

 保存后再次编译运行:

 方法二:运用-encoding参数指明编码方式

        改javac XXX.java 为javac -encoding UTF-8 XXX.java

javac -encoding UTF-8 HelloJava.java //编译方式(生成HelloJava字节码文件)
java HelloJava //运行方式(启动虚拟机,运行字节码文件)

修改编译代码后运行:

 注意:这里Hello Java文件仍为UTF-8编码格式

这样,GBK编码的不可映射字符问题就顺利解决了!!

 参考文献:

为什么java默认字符是GBK?-转_ssjsyswa的博客-CSDN博客


网站公告

今日签到

点亮在社区的每一天
去签到