波波老师 2021-12-25 14:58 采纳率: 75%
浏览 35
已结题

为什么€在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")就是错的呢?
有哪位博主懂这方面的,麻烦解答一下我的疑惑,谢谢了!

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 1月2日
    • 创建了问题 12月25日

    悬赏问题

    • ¥15 rt-thread线程切换的问题
    • ¥20 python忆阻器数字识别
    • ¥15 无法输出helloworld
    • ¥15 高通uboot 打印ubi init err 22
    • ¥20 PDF元数据中的XMP媒体管理属性
    • ¥15 R语言中lasso回归报错
    • ¥15 网站突然不能访问了,上午还好好的
    • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
    • ¥15 semrush,SEO,内嵌网站,api
    • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊