欢迎来到天天文库
浏览记录
ID:8873039
大小:30.50 KB
页数:8页
时间:2018-04-10
《ultraedit引出的字符编码问题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、UltraEdit引出的字符编码问题.txt曾经拥有的不要忘记;不能得到的更要珍惜;属于自己的不要放弃;已经失去的留作回忆。UltraEdit引出的字符编码问题(2007-05-2416:26:25)转载最近用ultraedit编辑python文件,遇到web显示中文乱码的问题,后来搜索终于找到了解决办法,感谢wewe80提供的资料,转贴如下:UltraEdit的问题及其编码一.关于各种编码文件标记头各种编码文件开头UTF-8以EFBBBFUTF-16以FEFF(big-endian)FFFF(little-en
2、dian)UNICODE以FFFE一.各种编码对于中文:各种编码对于中文:ASCII中文2个字节;英文:1个字节UNICODE中文2个字节;英文:2个字节UTF-8中文3个字节;英文:1个字节(开头有2个字节表示长度)二.中国的各种编码表示ASCII中国--D6D0B9FAA--61UTF-8中国--E4E8ADE59BBD61A--61UNICODE中国--FFFE2D4EFD56A--6100三.关于UltraEdit的问题1.用UNICODE编辑可以看到,默认的存储是ansi。用记事本的另存为即可看到其真实
3、的存储格式。2.UltraEdit打开utf-8会默认的用UNICODE方式来显示,我们要转化为ASCII显示,这样就能看到真实的utf编码了.在ASCII编辑模式下,会将utf-8编码当作gb2312来显示。3.关于各种转化.对于UNICODE/UTF-8转UTF-8(UNICODE编辑),我们可以看到中文字符,但是却看不到UTF-8的16进制表示,看到的都是UNICODE,因为UltraEdit会做内部转换。对于UNICODE/ASCII/UTF-8-8转UTF-8-8(ASCII编辑),我们可以看到UTF-
4、8-8的真实16进制表示,但是却看不到中文字符的正常显示。4.关于中国a中国中国(6中文1英文)倘不出问题,用ASCII转UTF-8-8(UNICODE编辑),这时在UNICODE中看到的文字的16进制编码是UNICODE格式,因为是UNICODE编辑的。但是保存却是UTF-8格式保存的。例如:中国a中国中国6中文1英文用ASCII转UTF-8-8(ASCII编辑)用UltraEdit打开选择所有文字看到的是14字节,大小却为16字节,因为多了两个字节FFFE;保存文件之后看到的却是19字节,看样子UTF-8-8
5、的EFBBBF的标记头并没有存储哦。四.关于联通在记事本中的错误显示问题在一些早期的UTF-8文件中并不要求一定要用EFBBBF的标记头,而是根据UTF-8-8的数据特征来判断。所以出现了联通和联的错误显示,因为将其认为是UTF-8格式编码。其检测里面所有字符是否遵循某种规则,而不仅仅是几个。所以联想就可以被正确识别,因为"想"不遵循UTF-8规则,而“联通”两个字都遵循UTF-8规则.谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词这是一篇程序员写给程序员的趣味读物。所谓趣味是指可以比较轻松
6、地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级。整理这篇文章的动机是两个问题:问题一:使用Windows记事本的“另存为”,可以在GBK、Unicode、Unicodebigendian和UTF-8这几种编码方式间相互转换。同样是txt文件,Windows是怎样识别编码方式的呢?我很早前就发现Unicode、Unicodebigendian和UTF-8编码的txt文件的开头会多出几个字节,分别是FF、FE(Unicode),FE、FF(Unicodebigendian),EF、BB、BF(UTF-
7、8)。但这些标记是基于什么标准呢?问题二:最近在网上看到一个ConvertUTF.c,实现了UTF-32、UTF-16和UTF-8这三种编码方式的相互转换。对于Unicode(UCS2)、GBK、UTF-8这些编码方式,我原来就了解。但这个程序让我有些糊涂,想不起来UTF-16和UCS2有什么关系。查了查相关资料,总算将这些问题弄清楚了,顺带也了解了一些Unicode的细节。写成一篇文章,送给有过类似疑问的朋友。本文在写作时尽量做到通俗易懂,但要求读者知道什么是字节,什么是十六进制。0、bigendian和lit
8、tleendianbigendian和littleendian是CPU处理多字节数的不同方式。例如“汉”字的Unicode编码是6C49。那么写到文件里时,究竟是将6C写在前面,还是将49写在前面?如果将6C写在前面,就是bigendian。如果将49写在前面,就是littleendian。“endian”这个词出自《格列佛游记》。小人国的内战就源于吃鸡蛋时是究竟从大头(
此文档下载收益归作者所有