我用VIM编辑程序代码,遇到奇怪的输出乱码问题。看了模拟器的设置,在程序中指定了字体,做了编码转换,做了种种努力,黔驴技穷,死活不知道问题在哪里。最后用上了愚公移山的办法,把各部分代码逐渐拷贝到一个正常运行的例子程序中去,一点一点试,直到例子程序完全与出问题的程序一样了,还是正常输出,我快要疯了。
在Cygwin下用file命令查看,才发现文件编码不同:
$ file serialtest1.java
serialtest.java: Non-ISO extended-ASCII Java program text, with CRLF line terminators
$ file serialtest2.java
serialtest2.java: UTF-8 Unicode Java program text, with CRLF line terminators
前者是从模拟器自带的例子程序直接修改的,后者则是重新建立的文件。iAppli模拟器竟然不支持UTF-8!
这个沉痛教训再一次证明,问题通常都很简单,KISS不仅适用于设计程序,也适用于调试程序。