粘贴和复制下的字符编码

直入正题,开始:

 

比如一个简单的繁体“絲”字,从网页中拷贝(Ctrl + C)下来,然后粘贴(Ctrl + V)到简单的文本文件中,

对于用户而言,这个字都是能被始终正常显示的。

 

背后发生的事情:

1. 首先了解“絲”字的编码

    在GBK的编码系统中,该字的编码是 0xBD 0x7A

    (http://www.360doc.com/content/05/0801/15/305_4166.shtml )

    在UNICODE的编码系统中,该字的编码是 0x7D 0x72

    (http://www.nengcha.com/code/unicode/ )

    参考UTF-8对Unicode编码的书写规则,该字的编码又被变化成了

    1110 0111 1011 0101 1011 0010  即 0xE7 0xB5 0xB2

    (http://www.cppblog.com/kb/archive/2005/09/19/320.aspx )

 

2. 开始复制和粘贴

    从UTF8编码的网页中拷贝这个字,实际上这个字已经从网页编码变成了操作系统内码(Windows中文系统应该就是GBK)

    也就是从上述的Unicode的UTF8形式,转换成了GBK码

 

    这样也就意味着,如果你是粘贴到系统的一个简单文本中,那么就是GBK的“絲”;

    而粘贴并存储到一个UTF8的网页,那么就是UTF8的“絲”。

 

UTF8 Character Table list:

http://www.utf8-chartable.de/unicode-utf8-table.pl

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值