用javac编译时报错:“错误:编码GBK出现不可映射字符”与windows记事本几种编码格式

用javac编译时报错:“错误:编码GBK出现不可映射字符”与windows记事本几种编码格式

用记事本编写java程序,若含有中文,且保存的编码格式为UTF-8,用javac编译时报错:“错误:编码GBK出现不可映射字符”的处理方法:

法1、将中文改成英文

法2、用Javac -encoding UTF-8  xxx.java

使用-encoding UTF-8命令项编译文件xxx.java 

法3、记事本打开java源文件,另存为选择ANSI编码 。

你可以用Hello.java文件试试,其源码如下:

public class HelloWorldwww{
         public static void main(String args[]){
                System.out.println("这是美丽的世界!");
         }
}

先用 cd 命令切换到Hello.java文件所在的文件夹

如果保存java源文件时选择的编码是ANSI,那么可以直接使用javac编译源文件:

  javac Hello.java

如果保存java源文件时选择的编码是UTF-8,那么使用javac编译源文件时必须显式用-encoding参数,告知编译器使用怎样的编码解析、编译源文件,即-encodeing给出的值必须和源文件的编码相同,不显式使用-encodeing参数,那么默认该参数的值是GBK(简体中文 Windows 操作系统中)。

javac -encoding UTF-8 Hello.java

下面,介绍一下windows记事本几种编码格式。

在windows平台下,打开内置的记事本小程序Notepad.exe.打开后,点击【文件】→【另存为】,弹出一个对话框,在最低部有一个“编码”的下拉列表,参见下图:

用javac编译时报错:“错误:编码GBK出现不可映射字符”与windows记事本几种编码格式_第1张图片

ANSI

ANSI 编码表示英文字符时用一个字节,表示中文用两个或四个字节。这些使用多个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。ANSI编码在不同的系统中代表着不同的编码:

     在简体中文 Windows 操作系统中,ANSI 编码代表 GBK 编码;

     在繁体中文 Windows 操作系统中,ANSI 编码代表 Big5;

UTF-8

UTF-8是unicode的实现方式之一,它规定了字符如何在计算机中存储,传输等。

UTF-16LE,其后缀是 LE 即 little-endian,小端的意思。小端就是将高位的字节放在高地址表示。

UTF-16BE,其后缀是 BE 即 big-endian,大端的意思。大端就是将高位的字节放在低地址表示。

unicode编码表中包含了世界上所有国家的所有字符和符号的编码。 例如“汉”字的Unicode编码是6C49。那么写到文件里时,究竟是将6C写在前面,还是将49写在前面?如果将6C写在前面,就是big endian。还是将49写在前面,就是little endian。

带有BOM的UTF-8

BOM即byte order mark ,中文名译作“字节顺序标记”。位于文件开始的地方。用于标记高位在前,还是低位在前。BOM 有两种形式: BE: Big-Endian, 高位在前,低位在后 LE: Little-Endian, 低位在前,高位在后 其中,UTF-8 的 BOM 可有可无,但如果读到 EF BB BF,就是 UTF-8 的文件。

用javac编译时报错:“错误:编码GBK出现不可映射字符”与windows记事本几种编码格式_第2张图片

 有的软件要求读入的文件必须带BOM。

你可能感兴趣的:(开发资料,编程实践入门,Java开发,java,编程资料)