"programs are written using unicode characters set " 这句话怎么理解呢,我直接在记事本上写测试代码,是ANSI编码格式的,这时可以顺利编译运行,但是将编码格式变成unicode时候,编译时就抱错 "illegal character ".以前对这种问题没注意,读到上面这句话时有点不解。
主要问题可以归结如下:java源程序文件在计算机上应该是以二进制字节串保存的吧,java 编译器编译源程序的时候,它将文件读进来时,是以什么规则来进行识别的,我的理解是:我用ANSI编码格式保存,java 编译器应该就按照ANSI来识别,如果我用unicode保存,java 编译器应该就按照unicode来识别,但是我用unicode保存,java 编译器就抱错了,这就更让我对最开始那句话不解了,求人指教。
注意:我不是指对文件的操作,而是针对java源程序本身的编译识别问题。
------解决方案--------------------
javac命令有个参数encoding,默认的情况下就是系统的编码。
如果你系统的中文,默认文件的编码是gbk。
它会把你文件内容按gbk码编译成unicode的class文件
但是你现在文件的编码是unicode,如果再按gbk来当然会报错了
如果你非要编译unicode的java文件 加个参数 -encoding utf-16