注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

NET START HERE

研究C/C++、网络/通信/协议编程、网络安全、软件安全

 
 
 

日志

 
 

为什么用记事本保存的UTF-8格式的java文件不能编译通过?  

2010-09-18 20:23:37|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Windows记事本默认保存的ANSI格式,java编译器默认也是ANSI格式,所以用记事本保存的默认编码格式直接用java编译不会存在编码的问题。而当保存成其他编码如UTF-8的时候问题就出现了,编译器报错并出现乱码:

记事本保存的UTF-8格式实际是带有ROM标志位的UTF-8格式,在文件开头有一个标志位,这个在java编译器中是不识别的,而java编译器不支持UTF-8+ROM标志位格式,所以用Editplus打开重新保存成没有标志位的UTF-8格式,编译就会通过了

如图

为什么用记事本保存的UTF-8格式的java文件不能编译通过? - IT心雪 - NET START HERE

用Editplus编辑器打开文件将其保存为没有开头标志位的UTF-8格式即可,windows记事本保存的实际上是UTF-8+ROM标志位格式,其他编码原理类似,特别注意是,用其他编码时要在编译命令后面指定编码类型,如:javac hello1.java -encoding UTF-8

为什么用记事本保存的UTF-8格式的java文件不能编译通过? - IT心雪 - NET START HERE

后记:当你使用javac hello1.java -encoding ANSI 命令编译时可能还会提示不支持ANSI编码,而我们明明保存的是ANSI编码,使用javac hello1.java 直接就编译通过了,这是怎么回事?

是的,实际上ANSI就是ASCII,你使用javac hello1.java -encoding ASCII就可以通过了

附:

ANSI码(American National Standards Institute)
美国国家标准学会的标准码

ASCII码(America Standard Code for Information Interchange)美国信息交换标准码

ANSI码仅在前126个与ASCII码相同,也就是说,ANSI包含于ASCII,所以java编译器直接取大了

  评论这张
 
阅读(875)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017