HelloWorld.java:1: 需要为 class、interface 或 enum 锘缝ublic class HelloWorld{ ^ 1 错误

这个错误出现的原因主要是在中文操作系统中,使用一贯的“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,尤其是做网站,在非汉语国家,将无法正常浏览。在信息化时代,国际交往日益频繁;做软件和网站,不能只着眼当前,也要为日后维护做优化、降低维护成本。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

BOM

如果您在修改任何PHP文件後发生:
* 不能登入或者不能登出;
* 页顶出现一条空白;
* 页顶出现错误警告;
* 其它不正常的情况。
则多半是编辑器的问题。
本程序采用UTF-8编码。现在几乎所有的文本编辑软件都可以显示并编辑UTF-8编码的文件。但是很遗憾,其中很多软件的表现并不理想。
类似WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。对于一般的文件,这样并不会产生什么麻烦。但对于 PHP来说,BOM是个大麻烦。
PHP并不会忽略BOM,所以在读取、包含或者引用这些文件时,会把BOM作为该文件开头正文的一部分。根据嵌入式语言的特点,这串字符将被直接执行(显示)出来。由此造成即使页面的 top padding 设置为0,也无法让整个网页紧贴浏览器顶部,因为在html一开头有这3个字符呢!
最大的麻烦还不是这个。受COOKIE送出机制的限制,在这些文件开头已经有BOM的文件中,COOKIE无法送出(因为在COOKIE送出前PHP已经送出了文件头),所以登入和登出功能失效。一切依赖COOKIE、SESSION实现的功能全部无效。
因此,在编辑、更改任何文本文件时,请务必使用不会乱加BOM的编辑器。Linux下的编辑器应该都没有这个问题。WINDOWS下,请勿使用记事本等编辑器。推荐的编辑器是: Editplus 2.12版本以上; EmEditor; UltraEdit(需要取消‘添加BOM’的相关选项); Dreamweaver(需要取消‘添加BOM’的相关选项)等。
对于已经添加了BOM的文件,要取消的话,可以用以上编辑器另存一次。(Editplus需要先另存为gb,再另存为UTF-8。)不过有时候不会显 。

最新文章

  1. C函数tolower,与toupper
  2. MySQL命令行查询乱码解决方法:
  3. generate the next AttestationNumber, 格式是ICD-EPRG-DEV-0000000001,ICD-EPRG-DEV-0000000002
  4. mina socket底层主流程源码实现
  5. 常见AutoCAD病毒(acad.fas、acad.lsp)清除方法
  6. Android开发中目前流行控件和知识点总结
  7. js函数设计原则
  8. Spring3.0 入门进阶(1):从配置文件装载Bean
  9. 关于JAVA中split方法使用竖线异常的问题
  10. HDU - 2154 线性dp
  11. [Chrome 浏览器快捷键]——“你是键盘党吗?”
  12. Python 黑客相关电子资源和书籍推荐
  13. 从 源码 谈谈 redux compose
  14. register form code(2nd week blog)
  15. RobotFramework-RIDE环境搭建二:Robot Framework-RIDE安装过程以及踩雷点
  16. ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛 题目9 : Minimum
  17. [UI] 01 - CSS
  18. 《objective-c基础教程》学习笔记(三)—— 从结构体到面向对象
  19. zookeeper 学习资料
  20. Redis学习系列五Set(集合)

热门文章

  1. JAVA虚拟机内存分配与回收机制
  2. 增加eclipse启动的Tomcat内存的
  3. JBPM4入门——5.流程定义的发布、查询、删除
  4. jquery easyui datagrid字段绑定问题
  5. 在Ubuntu中用root帐号登录
  6. [Everyday Mathematics]20150227
  7. php 采集程序 宋正河
  8. 使用Log.isLoggable方法
  9. Oracle创建删除用户,角色,表空间,导入导出数据库命令总结(转载)
  10. 轻松学习Linux之进程监视与管理