码迷,mamicode.com
首页 > 其他好文 > 详细

UltraEdit下诡异的乱码

时间:2015-03-18 18:31:17      阅读:350      评论:0      收藏:0      [点我收藏+]

标签:ultraedit   乱码   

UE打开汉字乱码,而记事本打开则非乱码现象分析                :

UltraEdit是个功能很强大的文本编辑器,日常的工作程序开发工作基本上都用它就完成。

最近碰到一个比较奇怪的情况,在同一系统下,同一个文件,用UE打开是乱码(),而用记事本打开正常(开始时间),这是一种什么情况?

分析:

我们假设在两种方式打开前,文件的编码是一致的,而种种迹象表明测试机上UE是用utf-8来解码的(可以测试证明,用记事本打开该文件,另存为utf-8,再用UE将另存后文件打开,显示正常,不再是乱码),记事本是用什么解码尚不明确,

""的utf-8编码是:

[-62, -65, -62, -86, -54, -68, -54, -79, -62, -68, -30, -117, -118]

转换成16进制表示:

C2 BF C2 AA CA BC CA B1 C2 BC E2 8B 8A

但是这编码和"开始时间"又有什么联系呢?

再看"开始时间"的gbk编码:

[-65, -86, -54, -68, -54, -79, -68, -28]

转换成16进制表示:

BF AA CA BC CA B1 BC E4

看似有一定联系,但一下又找不到明确的关联~可能是编码有问题~

基本确定原因是UE中有一个配置项是自动检测UTF-8文件,如果被UE判断为该文件是UTF-8,那么该文件中包含的汉字即使不是以UTF-8编码的,也为被强制以UTF-8解码,并对原码进行UTF-8泛化处理,如本文上面编码的变化。

UltraEdit的系统设置里有一项为“自动检测UTF-8文件”,如果这个项目设置了,那么UltraEdit会按照一定的规则去检测UTF-8文件。
UltraEdit支持一个很诡异的规则,就是如果文本中包含:encoding="utf-8"这样的字符串,那么,UltraEdit就会认为这个文件是utf-8编码的。

可以这样做一个实验,用windows自带的记事本(notepad)创建一个文本文件,在里面输入点中文,然后写上:encoding="utf-8",保存为ANSI编码的,然后将UltraEdit的“自动检测UTF-8文件”打开,打开刚才用notepad保存的文件,可以发现,这时显示的是乱码。这里UltraEdit把这个文件当作是utf-8编码的了。


总结下来呢就是GBK编码的汉字被UE当作UTF-8泛化解码处理了!

UltraEdit下诡异的乱码

标签:ultraedit   乱码   

原文地址:http://zlfwmm.blog.51cto.com/5892198/1621810

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!