记事本乱码的原因

 

摘自:http://bbs.pediy.com/showthread.php?t=94230

 

问题:

如果你的电脑操作系统是win2000或winxp的话,那么:
1、在桌面上点右键,选择新建 - 文本文档;  
2、打开“新建 文本文档“,录入“移动“两字后存盘退出;  
3、重新打开“新建 文本文档“,看到什么了?  
4、是不是刚刚录入的“移动“两字?
又来
1、在桌面上点右键,选择新建 - 文本文档; 
2、打开“新建 文本文档“,录入“联通“两字后存盘退出;
3、重新打开“新建 文本文档“,看到什么了?
4、是不是刚刚录入的“联通“两字不见了,取而代之是个烧焦的手机电池的模样?

请这里的高手解释一下为什么会这样?

 

解答:

晕..这个由于GB2312中文编码和UTF8编码产生混淆了..

这个问题主要涉及编码转换以及编排规则问题..
"联通"的内码是: 
c1  1100 0001 
aa  1010 1010 
cd  1100 1101 
a8  1010 1000 
注意第一二个字节、第三四个字节的起始部分的都是"110"和"10",正好与UTF8规则里的两字节模板是一致的,于是再次打开记事本时,记事本就误认为这是一个UTF8编码的文件,让我们把第一个字节的110和第二个字节的10去掉,我们就得到了"00001 101010",再把各位对齐,补上前导的0,就得到了"0000 0000 0110 1010",不好意思,这是UNICODE的006A,也就是小写的字母"j",而之后的两字节用UTF8解码之后是0368,这个字符什么也不是。这就是只有"联通"两个字的文件没有办法在记事本里正常显示的原因。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值