用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.打开后,点击【文件】→【另存为】,弹出一个对话框,在最低部有一个“编码”的下拉列表,参见下图:

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 的文件。

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

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习&实践爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值