直入正题,开始:
比如一个简单的繁体“絲”字,从网页中拷贝(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