【预备知识】
1.ANSI即为ASCII编码,为一个字节,只用到0~127号字符。
2.Unicode编码为万国码,包含几乎世界上的所有字符,一般情况下为两个字节。
3.GBK编码为中国特有编码,但也是在ANSI基础上演变出来的,包含两个字节,其中中文编码与Unicode的中文编码不一样。
4.UTF-8为Unicode的一种实现编码,Unicode编码可以通过一定的规则进行转变。
5.Windows记事本默认编码为ANSI(汉字表示即为GBK编码,0~127号下GBK编码与ANSI编码一样)。
【现象】
使用EditPlus 3.12.602编写的java源文件如下:
使用DOS命令窗口编译java源文件出现编译错误:编码GBK的不可映射字符
【原因】
由于使用DOS命令窗口编译java文件的时候,系统默认的编码格式是GBK。而Java源文件包含中文字符的代码一般是Unicode格式(我保存的格式为UTF-8),所以直接使用DOS命令窗口编译含有中文字符(包含注释)Java源代码就会出现编码错误。
【解决方案】
方案1:
把源文件的编码改为 ANSI。
操作过程如下:
方案2:
在DOS命令窗口进行编译时,使用javac -encoding UTF-8 xxx.java将DOS命令窗口格式临时改为UTF-8。