javac中不引人注目的编码小坑
来看下面这段java程序:
public class Test{
public static void main(String[] args){
System.out.println("哈哈哈");
}
}
是不是感觉没什么问题,是的,的确没问题。
但在windows下使用javac Test.java编译该源文件(源文件编码为utf-8)时会报错,如下:
Test.java:3: 错误: 编码 GBK 的不可映射字符 (0x88)
System.out.println("鍝堝搱鍝?");
^
1 个错误
造成这个问题的原因如下:
源代码文件的字符编码格式为utf-8,但javac编译时会以操作系统默认的字符编码去解释源文件(中文windows平台默认字符编码为gbk),当源代码中只含有英文时不会出现什么问题,但当源文件中含有中文时就会出现上面的错误。
有两个解决这个问题的方法:
- 源文件以gbk编码存储,此方法可行但不推荐。
- 在javac的编译参数中有一个
-encoding参数,该参数指定了源文件使用的字符编码,所以在编译时加上这个参数指定源文件的字符编码即可,如javac -encoding utf-8 Test.java。
如果嫌弃每次都要写这么长的话,这里提供一个小方法:
- 在源文件存储的目录中新建一个文本文件,写入以下内容
javac -encoding utf-8 %1,重命名该文件为myjavac.bat(myjavac可替换为你喜欢的任何名字)。 - 之后需要编译时使用如
myjavac Test.java这样的命令即可。 - 可以将该bat文件所在的目录加入到PATH环境变量中,这样在任何目录中都可以使用了。
如果想更懒可以写入javac -encoding utf-8 %1.java,这样你就可以不用写java后缀了,如myjavac Test。
上面的方法适用于想简化任何命令的地方。
javac中不引人注目的编码小坑的更多相关文章
- Jquery中on绑定的一些小坑
---恢复内容开始--- 今天我们来说说关于JQuery中事件绑定中on绑定的一些小问题,直接上代码了,大家拷下去就可以用 <!DOCTYPE html> <html lang=&q ...
- C#中的Infinity有个小坑
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 昨天家里有事,上网也不方便,就没有推送文章.今天很累,也不长篇大论了.简单介绍一下最近遇到的 ...
- Python中需要注意的一些小坑
Python小知识 # a = a + b /a += b 有时是不一样的 a=[1,2,3] b = a a = a + [4,5,6] # a=[1,2,3] # b = a # a += ...
- python中关于round函数的小坑
这个一直都想写,但是因为这个点比较小,所以一直懒得动手.不过还是补上吧,留着早晚是个祸害. round函数很简单,对浮点数进行近似取值,保留几位小数.比如 >>> round(10. ...
- Freemarker中的null判断,小坑一枚
上次写到,在Freemarker中日期转换,可以提取成工具方法.主要是Freemarker对null的处理方式,非常坑爹.只要一个对象或对象的属性为null,就报错,虽然不影响界面显示,但控制台和日志 ...
- Java中的equals比较,小坑一个
最近工作中,经常需要比较2个对象的值.有个问题经常遇到,就是下面的2种情况. public static void main(String[] args) { Integer a =11; Objec ...
- TortoiseSVN 中 一个 Merge revisions to.. 小坑
注意: 不能只选头与尾svn号, 一定要全选 !!全选 !!全选 !!
- Python 中关于 round 函数的小坑
参考: http://www.runoob.com/w3cnote/python-round-func-note.html
- jpa的@Query中"?"占位符的使用小坑
今天使用@Query自定义查询语句,出现了一个错误: java.lang.IllegalArgumentException: Parameter with that position [1] did ...
随机推荐
- Redis设计与实现——多机数据库的实现
复制 旧版Redis的复制功能分为同步(sync)和命令传播两个操作. sync:是一个非常耗费资源的操作 命令传播 ...
- 【Floyd】珍珠
[题目描述] 有n颗形状和大小都一致的珍珠,它们的重量都不相同.n为整数,所有的珍珠从1到n编号.你的任务是发现哪颗珍珠的重量刚好处于正中间,即在所有珍珠的重量中,该珍珠的重量列(n+1)/2位.下面 ...
- 机器学习:支持向量机(SVM)
SVM,称为支持向量机,曾经一度是应用最广泛的模型,它有很好的数学基础和理论基础,但是它的数学基础却比以前讲过的那些学习模型复杂很多,我一直认为它是最难推导,比神经网络的BP算法还要难懂,要想完全懂这 ...
- Android ActivityResumeTrigger: not whiteListed
在点击返回按钮的时候报错: ActivityResumeTrigger: not whiteListed 合作者写的返回操作是: findViewById(R.id.lin_back).setOnTo ...
- JavaFX桌面应用-loading界面
上次使用JavaFX开发了一个视频转码工具,当用户点击"启动"按钮开始转码的时候,会禁用启动按钮,防止多次启动转码. 这种处理方式对用户来说可能并是很友好,其实可以在启动转码的时弹 ...
- 【Go】单链表
node.go // 链表节点 type Node struct { data interface{} next *Node } // 构造一个节点 func NewNode(data interfa ...
- 利用JavaScript当鼠标点击导航时改变背景
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- HM16.0之帧间预测——xCheckRDCostInter()函数
参考:https://blog.csdn.net/nb_vol_1/article/category/6179825/1? 1.源代码: #if AMP_MRG Void TEncCu::xCheck ...
- 循序渐进VUE+Element 前端应用开发(19)--- 后端查询接口和Vue前端的整合
循序渐进VUE+Element 前端应用开发的系列文章中,前面介绍了系统各个功能的处理实现,本篇随笔从一个主线上介绍前后端开发的整合,让我们从ABP框架后端的查询接口的处理,前端API接口调用的封装, ...
- 痞子衡嵌入式:导致串行NOR Flash在i.MXRT下无法正常下载/启动的常见因素之SFDP
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是导致串行NOR Flash在i.MXRT下无法正常下载/启动的常见因素之SFDP. i.MXRT系列MCU发布已两年多了,基于i.MXR ...