本问题针对扩展ASCII码表中的第一个字符,欧元符€,其编码为128。
我特意查了一下,€的GBK编码也是128,如下图所示。
网址:
查看字符编码(简体中文)
http://www.mytju.com/classcode/tools/encode_gb2312.asp
然后我用JAVA代码写了一个文件,代码如下所示。
FileOutputStream out = new FileOutputStream("E:/tmp/character.txt");
out.write("你好啊".getBytes("GBK"));
out.write("€".getBytes("GBK"));
out.write(128);
out.close();
然后我使用notepad++以GBK编码的方式打开文件,如下图所示。
发现这两个€明显不一样啊,明显后面那个才是正确的。
然后我又输出了一下System.out.println("€".getBytes("GBK").length),是占两个字节的。
我的问题是:为什么直接write 128就能得到正确的€,而write "€".getBytes("GBK")就是错的呢?
有哪位博主懂这方面的,麻烦解答一下我的疑惑,谢谢了!