javac编译时出现GBK报错(错误:编码GBK的不可映射字符)
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的不可映射字符)相关推荐
- java编译报错提示编码gbk的不可映射字符啥意思_解决java编译错误:编码GBK的不可映射字符...
[我的Android进阶之旅]解决Android Studio 运行gradle命令时报错: 错误: 编码GBK的不可映射字符 1.问题描述 最近在负责公司基础业务和移动基础设施的开发工作,正在负责L ...
- java使用cmd编译中文时错误,解决Notepad++编写的Java程序在cmd窗口编译时中文注释报错问题...
解决Notepad++编写的Java程序在cmd窗口编译时中文注释报错问题 解决Notepad++编写的Java程序在cmd窗口编译时中文注释报错问题 在刚开始学习Java的过程中,考虑到记事本应用没 ...
- 在cmd中运行javac编译java文件报错: 编码GBK的不可映射字符、 非法字符: \65279
操作背景:我在eclipse建立了个HelloWorld.java文件,格式UTF-8,然后复制保存到C:\Users\alex\test目录下,在此处运行按住Shift+右键调出cmd命令窗口,输入 ...
- openwrt编译时遇到的报错
ash: -c: line 0: syntax error near unexpected token )' bash: -c: line 0:make) -C "/home/widora/ ...
- 删除文件夹时,报错“错误ox80070091:目录不是空的”,该如何解决?
目录 问题描述: 问题解决: 问题描述: 在删除文件夹时,一直报错"错误ox80070091:目录不是空的", 如下图.文件夹一直删除不了. 问题解决: 网上百度了很多种方法,按照 ...
- vs code使用Easy Sass插件编译sass文件路径报错问题解决
问题: scss文件中使用了@import来引入另一个scss文件,两个scss文件不在同一层级,所以我使用相对路径的写法来引用文件,但是使用vs code里面安装的扩展Easy Sass进行编译时, ...
- ADO连接数据库,编译到客户机运行时出现CreateInstance报错0x80004002、CreateParameter报0xC0000005错误的解决方法。
ADO连接数据库,编译到客户机运行时出现CreateInstance报错0x80004002,经查是由于ADO版本不一致引起的. 解决方法将原来stdafx.h中的 #import "c:\ ...
- 编译文件时报错:错误: 编码GBK的不可映射字符
1.遇到的问题:窗口cmd编译文件报错:编码GBK的不可映射字符: 2.原因分析: Windows下默认为GBK编码,javac编译utf-8编码的java文件时,会报错: 编码GBK的不可映射字符 ...
- IDEA Generate JavaDoc时 控制台报错误: 编码GBK的不可映射字符
一.生成JavaDoc 为了方便查看功能解释,除了使用Swagger-ui以外,还需要知道非控制器(controller)类的功能,比如Service.Resource等.于是尝试了一下IDEA的生成 ...
最新文章
- php源码十六进制加密,php-简单对称加密算法和字符串与十六进制之间的互转函数,php-十六进制_PHP教程...
- AcWing 845. 八数码(3阶数字华容道):bfs求最短路,状态表示困难
- Page Ability 之间的跳转概念和应用分享
- 消息队列之延时消息应用解析及实践
- ActiveMQ的消息存储(八)
- 空白世界地图打印版_洪恩识字卡1300字十字帖+绘本,可打印成册
- 【英语学习】【Level 07】U04 Rest and Relaxation L3 The finest hotel
- 406. 根据身高重建队列
- 洞悉物联网发展1000问之可穿戴设备的未来会怎样?
- 【避坑】初次接项目的血与泪,扎坑了老铁(二)
- makefile的编写(4)
- Apache JMeter 5.1.1 发布,压力测试工具
- JSP 创建 CRUD 示例 MyBatis DAO 用于数据库JSTL 用于遍历记录
- 练习使用firewalld的masquerade和nat功能
- openoffice java_java代码实现开启openoffice服务和关闭sffice.exe进程
- html计算斐波那契数列通项公式,斐波那契数列指标公式
- 小红书严惩刷量行为:如何才能优雅的种草
- 微信小程序基于云数据库简单实现帖子点赞功能。
- WCF 项目应用连载[6] - 升级Lig服务 - 设计ILigger 构建一个完善的Lig版本
- TopCoder简介
热门文章
- c语言设计模式代码完整实现-状态机模式
- KVM服务器安装详解及其应用(Services02 DAY01)
- C# 连接SQLSERVER数据库 连接字符串
- docker安装mysql 5.7
- 【学习笔记】Part1·JavaScript·深度剖析-函数式编程与 JS 异步编程、手写 Promise(二、JavaScript 异步编程)
- #前端开发# 【一】 之Animate动画库的安装及详细用法
- HTML CSS基本语法
- 创建sprite数字字体
- CAD(布置厨洁具)(尺寸标注)5.12
- phpwind index.php?m=designc=api,phpwind v9存在命令执行漏洞(登陆后台)