今天用Notead++编写一个简单的Java代码文件,输出打印字符。如果是输出英文,正常输出,但是如果输出字符串中包含了中文,就会出现乱码的现象。
注意右下角的编码方式是UTF-8(其实它对应的是“以UTF-8无BOM格式编码”,我们可以菜单栏对应的“格式”中可以更改编码方式)。
在命令行运行的结果如下图所示。
而打开命令行点击左上角,查看属性
命令行使用的编码方式是936 (ANSI/OEM-简体中文GBK)
为了使得程序正常输出结果,即输出中文,我们可以直接在菜单栏的“设置”中选择 首选项->新建,将编码方式改为ANSI
这样再在命令行执行的话,就可以输出中文了。
下面来补充一下相关的编码格式知识:
1. ASCII(American Standard Code for Information Interchange),美国信息交换标准码。一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。
2. 为了方便各国语言的编码,ANSI出现了。用0x00~0x7f (即十进制下的0到127)范围的1 个字节来表示 1 个英文字符,超出一个字节的 0x80~0xFFFF 范围来表示其他语言的其他字符。ASCII和ANSI在前128位相同,后面不同。每个国家的ANSI不一样。ANSI不是某一种特定的编码方式,在不同的语言系统里表示
3. 为了解决这个问题,Unicode出现。常用两个字节表示一个字符,有些生僻字符可以用4个字节表示,但是原本在ASCII和ANSI中只需用一个字节就可以表示的现在必须用两个字节,造成了浪费,所以就有了UTF-8
4. UTF-8
更改计算机编码默认编码方式可以参考文章:
https://blog.csdn.net/imxiangzi/article/details/77370160