前言
本文旨在解决java编译中出现的错误信息:
error: unmappable character for encoding ASCII
1 问题场景
系统:Ubuntu 14.04
jdk版本:1.7
我在编译一个java项目的时候,出现了错误:
error: unmappable character for encoding ASCII
,如下图。
2 原因
我认为原因很简单,应该是里面有中文字符(因为它显示的是??
,具体我就不深究了)。才会报这样的错误。
3 解决方案一
根据java编译报错信息提示的??
,把对应的代码中的问号给删掉,保存后再重新编译,就不会报错了。
但是这样“治标不治本”,以后有类似的问题还得手动改,不能一劳永逸。
所以给出解决方案二。
4 解决方案二
在/etc/profile
文件的末尾加上:export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8
即可。
具体操作如下:
sudo nano /etc/profile (修改/etc/profile 文件需要sudo权限,可以用nano编辑器,也可以用vim,gedit等等)
而后添加:
export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8
source /etc/profile (使/etc/profile的修改立即生效)
然后再用java编译此项目,就不会报错了。
当然,如果嫌麻烦,也可以直接ctrl+alt+c
打开Ubuntu终端,然后输入 export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8
即可,但是我不确定下次开机启动时还会生效。
所以我在实际中是直接写到/etc/profile里面了,而且我在 ~/.bashrc
文件中的末尾是加了一行source /etc/profile
指令的,这样可以保证每次开机登录后,/etc/profile中的内容(如环境变量)都会生效。
总结
为什么要记录这个“简单的”问题呢?
因为一开始找了很久没找到正确答案(一开始看的都是 [2-5]这样的文献,不是我想要的答案),而且中间有些细节需要自己斟酌,觉得还比较有意义,故记录在此,如有碰到同样问题的读者看到这篇文章,也算提供了些微末的帮助吧。
参考文献
主要参考:
[1] 解决java - Unmappable character for encoding ASCII but my files are in UTF-8 http://www.itkeyword.com/doc/0410597815430237770/unmappable-character-for-encoding-ascii-but-my-files-are-in-utf-8
此外还参考了:
[2] Javadoc error: unmappable character for encoding ASCII https://stackoverflow.com/questions/22599003/javadoc-error-unmappable-character-for-encoding-ascii
[3] IDEA javadoc 生成文档时报错 error: unmappable character for encoding ASCII https://blog.csdn.net/u013020306/article/details/52767662
[4] Setting the default Java character encoding? https://stackoverflow.com/questions/361975/setting-the-default-java-character-encoding
[5] 进行以上Java编译的时候,出现unmappable character for encoding GBK。 https://www.cnblogs.com/yuhuameng/p/5448726.html