javac编译时出现GBK报错(错误:编码GBK的不可映射字符)一

这里列出我遇到的三种情况

    代码格式分别为:ANSI、UTF-8、无BOM的UTF-8(这里我用的是notepad++进行编写)

ANSI格式

    首先我们先创建一个.java源文件,且文件名和主(public)类名一定要一致,如下图:

注释和输出均为汉字。接下来,我们进行编译、运行:
1)打开cmd窗口:输入javac HelloWorld.java 对源程序进行编译;
2)输入 java HelloWorld 运行HelloWorld.class文件。过程如图:

编译成功。这是ANSI格式编码,因为在简体中文Windows操作系统中,ANSI 编码代表 GBK 编码,所以这里即使代码里有汉字程序也不会出错。

UTF-8格式

这里代码不变只需将格式改为UTF-8即可。在改为UTF-8后,代码中的汉字会变成乱码,如图:

所以,需将对乱码重新改为汉字(为了演示出效果)。
我们再次进行编译,这时便会出现“错误: 编码GBK的不可映射字符”。如图:

因为javac采用了操作系统默认的 GBK编码解码我们读取的字节,既然报格式错误,那我们在编译时指定编码参数:javac -encoding utf-8 xxx.java。

这时会发现不报格式错误了,而是“非法字符”错误。这个报错暂时还没有找到解决方法。

无BOM的UTF-8格式

这里还是使用上面的代码,格式改为“以UTF-8无BOM格式编码”,改完会发现,代码里的汉字不会变为乱码。然后进行编译:(编译时注意加指定编码参数-encoding utf-8

编译、运行成功。
BOM(byte order mark)是为 UTF-16 和 UTF-32 准备的,用于标记字节序(byte order)。微软在 UTF-8 中使用 BOM 是因为这样可以把 UTF-8 和 ASCII 等编码明确区分开,但这样的文件在 Windows 之外的操作系统里会带来问题。

总结

1、ANSI编码格式:代码里不论出现英文、还是汉字都可以运行成功。
2、UTF-8编码格式:即使是没有汉字,只有英文,还是会报错。
3、无BOM的UTF-8编码格式:在编译源代码时,一定要加上指定编码参数-encoding utf-8 ,不加也可以编译通过,但如果输出有汉字,运行出来的结果汉字部分将会是乱码。

javac编译时出现GBK报错(错误:编码GBK的不可映射字符)相关推荐

  1. java编译报错提示编码gbk的不可映射字符啥意思_解决java编译错误:编码GBK的不可映射字符...

    [我的Android进阶之旅]解决Android Studio 运行gradle命令时报错: 错误: 编码GBK的不可映射字符 1.问题描述 最近在负责公司基础业务和移动基础设施的开发工作,正在负责L ...

  2. java使用cmd编译中文时错误,解决Notepad++编写的Java程序在cmd窗口编译时中文注释报错问题...

    解决Notepad++编写的Java程序在cmd窗口编译时中文注释报错问题 解决Notepad++编写的Java程序在cmd窗口编译时中文注释报错问题 在刚开始学习Java的过程中,考虑到记事本应用没 ...

  3. 在cmd中运行javac编译java文件报错: 编码GBK的不可映射字符、 非法字符: \65279

    操作背景:我在eclipse建立了个HelloWorld.java文件,格式UTF-8,然后复制保存到C:\Users\alex\test目录下,在此处运行按住Shift+右键调出cmd命令窗口,输入 ...

  4. openwrt编译时遇到的报错

    ash: -c: line 0: syntax error near unexpected token )' bash: -c: line 0:make) -C "/home/widora/ ...

  5. 删除文件夹时,报错“错误ox80070091:目录不是空的”,该如何解决?

    目录 问题描述: 问题解决: 问题描述: 在删除文件夹时,一直报错"错误ox80070091:目录不是空的", 如下图.文件夹一直删除不了. 问题解决: 网上百度了很多种方法,按照 ...

  6. vs code使用Easy Sass插件编译sass文件路径报错问题解决

    问题: scss文件中使用了@import来引入另一个scss文件,两个scss文件不在同一层级,所以我使用相对路径的写法来引用文件,但是使用vs code里面安装的扩展Easy Sass进行编译时, ...

  7. ADO连接数据库,编译到客户机运行时出现CreateInstance报错0x80004002、CreateParameter报0xC0000005错误的解决方法。

    ADO连接数据库,编译到客户机运行时出现CreateInstance报错0x80004002,经查是由于ADO版本不一致引起的. 解决方法将原来stdafx.h中的 #import "c:\ ...

  8. 编译文件时报错:错误: 编码GBK的不可映射字符

    1.遇到的问题:窗口cmd编译文件报错:编码GBK的不可映射字符: 2.原因分析: Windows下默认为GBK编码,javac编译utf-8编码的java文件时,会报错: 编码GBK的不可映射字符 ...

  9. IDEA Generate JavaDoc时 控制台报错误: 编码GBK的不可映射字符

    一.生成JavaDoc 为了方便查看功能解释,除了使用Swagger-ui以外,还需要知道非控制器(controller)类的功能,比如Service.Resource等.于是尝试了一下IDEA的生成 ...

最新文章

  1. php源码十六进制加密,php-简单对称加密算法和字符串与十六进制之间的互转函数,php-十六进制_PHP教程...
  2. AcWing 845. 八数码(3阶数字华容道):bfs求最短路,状态表示困难
  3. Page Ability 之间的跳转概念和应用分享
  4. 消息队列之延时消息应用解析及实践
  5. ActiveMQ的消息存储(八)
  6. 空白世界地图打印版_洪恩识字卡1300字十字帖+绘本,可打印成册
  7. 【英语学习】【Level 07】U04 Rest and Relaxation L3 The finest hotel
  8. 406. 根据身高重建队列
  9. 洞悉物联网发展1000问之可穿戴设备的未来会怎样?
  10. 【避坑】初次接项目的血与泪,扎坑了老铁(二)
  11. makefile的编写(4)
  12. Apache JMeter 5.1.1 发布,压力测试工具
  13. JSP 创建 CRUD 示例 MyBatis DAO 用于数据库JSTL 用于遍历记录
  14. 练习使用firewalld的masquerade和nat功能
  15. openoffice java_java代码实现开启openoffice服务和关闭sffice.exe进程
  16. html计算斐波那契数列通项公式,斐波那契数列指标公式
  17. 小红书严惩刷量行为:如何才能优雅的种草
  18. 微信小程序基于云数据库简单实现帖子点赞功能。
  19. WCF 项目应用连载[6] - 升级Lig服务 - 设计ILigger 构建一个完善的Lig版本
  20. TopCoder简介

热门文章

  1. c语言设计模式代码完整实现-状态机模式
  2. KVM服务器安装详解及其应用(Services02 DAY01)
  3. C# 连接SQLSERVER数据库 连接字符串
  4. docker安装mysql 5.7
  5. 【学习笔记】Part1·JavaScript·深度剖析-函数式编程与 JS 异步编程、手写 Promise(二、JavaScript 异步编程)
  6. #前端开发# 【一】 之Animate动画库的安装及详细用法
  7. HTML CSS基本语法
  8. 创建sprite数字字体
  9. CAD(布置厨洁具)(尺寸标注)5.12
  10. phpwind index.php?m=designc=api,phpwind v9存在命令执行漏洞(登陆后台)