- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
UltraEdit引出的字符编码问题.txt曾经拥有的不要忘记;不能得到的更要珍惜;属于自己的不要放弃;已经失去的留作回忆。UltraEdit引出的字符编码问题(2007-05-24 16:26:25)转载
最近用ultraedit编辑python文件,遇到web显示中文乱码的问题,后来搜索终于找到了解决办法,感谢wewe80提供的资料,转贴如下:
UltraEdit的问题及其编码
一.关于各种编码文件标记头
各种编码文件开头
UTF-8以 EF BB BF
UTF-16以 FE FF(big-endian) FF FF(little-endian)
UNICODE以 FF FE
一.各种编码对于中文:
各种编码对于中文:
ASCII 中文 2个字节;英文:1个字节
UNICODE 中文 2个字节;英文:2个字节
UTF-8 中文 3个字节;英文:1个字节 (开头有2个字节表示长度)
二.中国的各种编码表示
ASCII 中国--D6 D0 B9 FA A--61
UTF-8 中国--E4 E8 AD E5 9B BD 61 A--61
UNICODE 中国--FF FE 2D 4E FD 56 A--61 00
三.关于UltraEdit的问题
1.用UNICODE编辑可以看到,默认的存储是ansi。用记事本的另存为即可看到其真实的存储格式。
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-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字节,因为多了两个字节FF FE;保存文件之后看到的却是19字节,看样子UTF-8-8的EF BB BF的标记头并没有存储哦。
四.关于联通在记事本中的错误显示问题
在一些早期的UTF-8文件中并不要求一定要用EF BB BF的标记头,而是根据UTF-8-8的数据特征来判断。所以出现了联通和联的错误显示,因为将其认为是UTF-8格式编码。其检测里面所有字符是否遵循某种规则,而不仅仅是几个。所以联想就可以被正确识别,因为想不遵循UTF-8规则,而“联通”两个字都遵循UTF-8规则.
谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词
这是一篇程序员写给程序员的趣味读物。所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级。整理这篇文章的动机是两个问题:
问题一:
使用Windows记事本的“另存为”,可以在GBK、Unicode、Unicode big endian和UTF-8这几种编码方式间相互转换。同样是txt文件,Windows是怎样识别编码方式的呢?
我很早前就发现Unicode、Unicode big endian和UTF-8编码的txt文件的开头会多出几个字节,分别是FF、FE (Unicode),FE、FF(Unicode big endian),EF、BB、BF(UTF-8)。但这些标记是基于什么标准呢?
问题二:
最近在网上看到一个ConvertUTF.c,实现了UTF-32、UTF-16和UTF-8这三种编码方式的相互转换。对于Unicode(UCS2)、 GBK、UTF-8这些编码方式,我原来就了解。但这个程序让我有些糊涂,想不起来UTF-16和UCS2有什么关系。
查了查相关资料,总算将这些问题弄清楚了,顺带也了解了一些Unicode的细节。写成一篇文章,送给有过类似疑问的朋友。本文在写作时尽量做到通俗易懂,但要求读者知道什么是字节,什么是十六进制。
0、big endian和little endian
big endian 和little endian是CP
文档评论(0)