为什么€在GBK编码只占一个字节,而"€".getBytes("GBK")输出两个字节?

本问题针对扩展ASCII码表中的第一个字符,欧元符€,其编码为128。
我特意查了一下,€的GBK编码也是128,如下图所示。

img

网址:

然后我用JAVA代码写了一个文件,代码如下所示。

FileOutputStream out = new FileOutputStream("E:/tmp/character.txt");
out.write("你好啊".getBytes("GBK"));
out.write("€".getBytes("GBK"));
out.write(128);
out.close();

然后我使用notepad++以GBK编码的方式打开文件,如下图所示。

img

发现这两个€明显不一样啊,明显后面那个才是正确的。

然后我又输出了一下System.out.println("€".getBytes("GBK").length),是占两个字节的。

我的问题是:为什么直接write 128就能得到正确的€,而write "€".getBytes("GBK")就是错的呢?
有哪位博主懂这方面的,麻烦解答一下我的疑惑,谢谢了!