最近在学习一些java的入门知识,当然在学习的时候就少不了敲一些小例子,在敲小例子的时候都是用txt文本敲的,没有采用成熟的编译器,因为这样更有利于我们对一些基础语法的掌握,也可以见到些错误,这样更有利于我们的成长。下面就和大家分享一个常见的错误:
首先给出此错误的解决方案如下:
我们在新建文本文档的时候,默认的编码方式为UTF-8,如下图:
因为我们采用的时候UTF-8的编码方式所以导致了这个错误,我们应该将此java文件用记事本打开,然后另存为在另存为的时候选在ANSI的编码方式,然后将原来的文件覆盖,这样才重新编译和运行,就没有错误了!
这样我们就可以完美解决了这个错误。
下面我们来分析为什么会引起这个错误?想要弄秦楚这个问题,我们必须先弄清楚UTF-8和ANSI这两种编码方式到底有什么不同?
UTF-8 VS ANSI
ANSI编码一般指Windows-1252编码,是一个256个字符的字集的编码,每个字符由一个字节表示。其中前128个字符(00-7F)和ASCII的7bits编码一样,后128个字符中有一些欧洲国家用的有重音的字符。ANSI编码在不同语言的Windows下也指此语言下的Windows编码页,比如中文环境下指Windows-936(也就是GB2312),日文环境下是Windows-932(JIS)编码等等,也是前128个字符(00-7F)和ASCII的7bits编码一样,其他字符则由2个字节表示。
UTF-8是针对Unicode的可变长度字符编码,一个字符可以由1到4个字节表示,其中由一个字节表示的字符和ASCII的7bits编码一样,而包括中文在内的大部分字符则由3个字节表示。
所以如果文本里只有ASCII的7bits编码的那些,这两种编码是互相兼容没有区别的,但是对其他字符,编码就不同了,而且Windows-1252编码无法表达除了256个字符外的比如中文字符,其他的ANSI码如Windows-936也只能表示一部分Unicode中的字符。编码格式的不同导致程序无法运行很容易理解,因为同样的字在不同的编码方式下表达的字符是不同的或者是不能被表示的,除非是ASCII的7bits编码中的那些字符。
小结
在给我们的知识注入新生力量的时候总是会遇到这种或那种的阻塞,这时候我们需要利用原有的知识和网络来解决它,然后总结。这样我们会收获的更多,其实在查询资料的时候自己有了解了多种编码方式,像Unicode,ASCIIAnsi,UTF8,Unicode,ASCII编码的区别等,我们需要了解他们之间的区别,才能在以后的编程过程中更加的顺利,下面给大家推荐一篇博客,是关于Ansi,UTF8,Unicode,ASCII编码的区别的,希望能给大家提供帮助。