大家可以试一下,新建一个文本文档,用记事本打开,然后输入(不要复制)如下内容:"\xb8\xc5\xb4\xc5\x00",包括引号,引号是英文的,保存,关闭,再打开,你就会发现显示的内容却是“尢扸尸捸尵扸尴捸尵へ∰”。记事本居然是按照unicode来解码的,真是没想通。
有了解情况的讲一讲,记事本到底是怎么工作的?
8 个解决方案
#2
UTF-8有的文件有BOM(BOM就是表示文件类型的前两个字节或三个字节),有的文件没有BOM。
当UTF-8没有BOM的时候,记事本就不能严格区分ANSI文件和UTF-8文件。
这种情况下记事本只能根据文件中的内容进行猜测。如果ANSI文件中内容刚好和某些UTF-8编码匹配,记事本就会把它误当作UTF-8来处理,从而显示乱码。
一个比较常见的例子是“没”,把一个汉字“没”输入文件,然后打开,当今绝大部分流行的文件编辑器都会显示乱码“û”。唯一能正确显示这个汉字的文件编辑器是PilotEdit,PilotEdit具有很强的编码识别能力。 http://topic.csdn.net/u/20090723/07/33b39399-81ad-4fb1-a4a2-78509d2161a3.html
当UTF-8没有BOM的时候,记事本就不能严格区分ANSI文件和UTF-8文件。
这种情况下记事本只能根据文件中的内容进行猜测。如果ANSI文件中内容刚好和某些UTF-8编码匹配,记事本就会把它误当作UTF-8来处理,从而显示乱码。
一个比较常见的例子是“没”,把一个汉字“没”输入文件,然后打开,当今绝大部分流行的文件编辑器都会显示乱码“û”。唯一能正确显示这个汉字的文件编辑器是PilotEdit,PilotEdit具有很强的编码识别能力。 http://topic.csdn.net/u/20090723/07/33b39399-81ad-4fb1-a4a2-78509d2161a3.html
#3
专业……
你是搞这个的吧?!
#4
yes
#5
被你看到这个贴也算巧了。。。
#6
#7
记事本输入:联通
也是乱码!
win7仍旧是!楼主给出的不是乱码!我是复制,懒得一个个打!
也是乱码!
win7仍旧是!楼主给出的不是乱码!我是复制,懒得一个个打!
#8
每个编码都有BOM,我也是好奇才发现的。
核心编程里说是用IsTextUnicode基于统计判断的,不对
核心编程里说是用IsTextUnicode基于统计判断的,不对
#1
http://www.u6u8.net/blog/article.asp?id=874
记事本没猜对字符集,造成了乱码
记事本没猜对字符集,造成了乱码
#2
UTF-8有的文件有BOM(BOM就是表示文件类型的前两个字节或三个字节),有的文件没有BOM。
当UTF-8没有BOM的时候,记事本就不能严格区分ANSI文件和UTF-8文件。
这种情况下记事本只能根据文件中的内容进行猜测。如果ANSI文件中内容刚好和某些UTF-8编码匹配,记事本就会把它误当作UTF-8来处理,从而显示乱码。
一个比较常见的例子是“没”,把一个汉字“没”输入文件,然后打开,当今绝大部分流行的文件编辑器都会显示乱码“û”。唯一能正确显示这个汉字的文件编辑器是PilotEdit,PilotEdit具有很强的编码识别能力。 http://topic.csdn.net/u/20090723/07/33b39399-81ad-4fb1-a4a2-78509d2161a3.html
当UTF-8没有BOM的时候,记事本就不能严格区分ANSI文件和UTF-8文件。
这种情况下记事本只能根据文件中的内容进行猜测。如果ANSI文件中内容刚好和某些UTF-8编码匹配,记事本就会把它误当作UTF-8来处理,从而显示乱码。
一个比较常见的例子是“没”,把一个汉字“没”输入文件,然后打开,当今绝大部分流行的文件编辑器都会显示乱码“û”。唯一能正确显示这个汉字的文件编辑器是PilotEdit,PilotEdit具有很强的编码识别能力。 http://topic.csdn.net/u/20090723/07/33b39399-81ad-4fb1-a4a2-78509d2161a3.html
#3
专业……
你是搞这个的吧?!
#4
yes
#5
被你看到这个贴也算巧了。。。
#6
#7
记事本输入:联通
也是乱码!
win7仍旧是!楼主给出的不是乱码!我是复制,懒得一个个打!
也是乱码!
win7仍旧是!楼主给出的不是乱码!我是复制,懒得一个个打!
#8
每个编码都有BOM,我也是好奇才发现的。
核心编程里说是用IsTextUnicode基于统计判断的,不对
核心编程里说是用IsTextUnicode基于统计判断的,不对