[Java学习]javac 编译源文件出现“锘缝ublic”、“非法字符: \65279”的乱码情况
2016-04-10 10:26
351 查看
这个错误出现的原因主要是在中文操作系统中,使用一贯的“javac HelloWorld.java”方式编译UTF-8(带BOM)编码的.java源文件,在没有指定编码参数(encoding)的情况下,默认是使用GBK编码。当编译器用GBK编码来编译UTF-8文件时,就会把UTF-8(带BOM)编码文件的文件头的占3个字节的头信息,按照GBK中汉字占两个字节、英文占1个字节的特性解码成了“乱码”的两个汉字。这个源文件应该是用记事本另存存为UTF-8编码造成的。
对于非GBK及其子集编码(GB2312)的正确的源文件,编译方式为“javac -encoding "UTF-8" HelloWord.java”,这样代码错误的指定代码里就不会出现乱码的中文。
但是依然会有错误,提示“HelloWorld.java:1: 非法字符: \65279。
这是因为.java对于UTF-8编码,只识别UTF-8(不带BOM)那种。而记事本只支持保存文件为带签名的UTF-8,那有没有办法解决呢?
当然是有的,那就是使用EmEditor、EditPlus、UltraEdit或Notepad++之类的工具另存为UTF(不带BOM)(区别于带UTF + BOM)的编码文件。这时候使用“javac -encoding "UTF-8" HelloWorld.java”,就没有上述编码问题了。
也许有人会说,“我干脆都用GBK不就行了吗,为什么还要用UTF-8呢?”
这是因为UTF-8支持世界多种语言的文字,被世界多数国家接受,是国际通用编码,也是Java推荐使用的编码。Java集成开发环境Eclipse中默认编码就是UTF-8。如果使用GBK,尤其是做网站,在非汉语国家,将无法正常浏览。在信息化时代,国际交往日益频繁;做软件和网站,不能只着眼当前,也要为日后维护做优化、降低维护成本。
相关文章推荐
- Orace查询数据出现乱码的问题解决思路
- oracle em 按钮乱码解决办法及em网页变成英文
- C#读取中文文件出现乱码的解决方法
- mysql命令提示行连接乱码的解决
- 解决Java程序使用MySQL时返回参数为乱码的示例教程
- Jquery乱码的一次解决过程 图解教程
- 解决realplayer11中文正式版网页右键乱码问题embed_cn.dll
- 计算机中的字符串编码、乱码、BOM等问题详解
- PHP附件下载中文名称乱码的解决方法
- PHP使用PDO操作数据库的乱码问题解决方法
- php+AJAX传送中文会导致乱码的问题的解决方法
- Discuz!nt 源文件变成乱码的解决方法
- jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
- JavaScript中出现乱码的处理心得
- Js,alert出现乱码问题的解决方法
- 深入Lumisoft.NET组件开发碰到乱码等问题的解决方法
- jquery中文乱码的多种解决方法
- Jquery网页出现的乱码问题的三种解决方法
- oracle安装出现乱码等相关问题
- GET方法URL中传递中文参数乱码的解决方法