文本文件编码转换器
来源:互联网 发布:徐宥箴 知乎 编辑:程序博客网 时间:2024/04/29 13:59
文本文件也有编码?却实如此。什么是编码呢?编码是指不同国家的语言在计算机中的一种存储和解释规范,如,我们常说的ANSI是一种存储方式,ASCII是一种解释规范。
最初,Internet上只有一种字符集——ANSI的ASCII字符集(American Standard Code for Information Interchange,“美国信息交换标准码),它使用7 bits来表示一个字符,总共能表示128个字符,后来IBM公司在此基础上进行了扩展,用8bit来表示一个字符,总共可以表示256个字符,充分利用了一个字节所能表达的最大信息。后来派生了,的字符集,如:UTF-8,Unicode等等,正式的名称为MBCS(Multi-Byte Chactacter System,多字节字符系统),通常也称为ANSI字符集。
UNICODE与UTF-8,由于每种语言都制定了自己的字符集,导致最后存在的各种字符集实在太多,在国际交流中要经常转换字符集非常不便。因此,产生了Unicode字符集,它固定使用16 bits(两个字节)来表示一个字符,共可以表示65536个字符,标准的Unicode称为UTF-16(UTF:UCS Transformation Format )。后来为了双字节的Unicode能够在现存的处理单字节的系统上正确传输,出现了UTF-8,使用类似MBCS的方式对Unicode进行编码。(Unicode字符集有多种编码形式),例如“连通”两个字的Unicode标准编码UTF-16 (big endian)为:DE
因此,为了标示每种编码格式,在文件头用特殊字节表示每种编码,当一个软件打开一个文本时,要做的第一件事是检测文件头标识,确定这个文本是使用哪种字符集的哪种编码保存的。下表为几种文本编码的文件头标识:
编码格式
文件头
ANSI
无
UTF-8
EF BB BF
Unicode(little endian)
FE FF
Unicode(big endian)
FF FE
在实际开发应用中,我们处理文本类型的文件,如:jsp、aspx、php、js等等程序源文件时,要注意文件保存时的编码,如果用不同的开发工具,可能保存的格式会各不相同。如在VS2005开发环境里,当改变 aspx 文件中 head区里的
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
字符集设置(如把 gb2312 改成 utf-8),在保存时,VS2005会自作聪明的改变你的文件的编码格式。当用不能正确识别文本编码格式的其它开发工具(如firework)打开时,就会出现乱码,因为不能正确识别文本文件编码的工具在打开时仍然按 ANSI字符格式显示。这样就会导致问题的出现。
在Windows98以下的操作系统,默认是按ANSI格式处理的,其操作系统自带的记事本没有识别文本文件编码的功能,如果打开了一个Unicode编码的文本文件,将会出现乱码。而Windows2000以上的操作系统默认是按Unicode格式处理的,而且操作系统自带的记事本能够正确识别不同格式的文件文件,打开时都会显示正常。有一点要注意:在Windows2000以上的操作系统中,就算是文本文件格式是ANSI的,操作系统处理时也要先转为Unicode格式再处理。所以,建议大家在Windows2000以上的操作系统中处理文本文件时,按Unicode格式保存,这样,可节省操作系统识别及转换的时间。
我搞了一个小工具软件,用于识别文本文件是什么编码格式的,以及可以批量转换指定目录下指定后缀文件的编码,下载地址:http://download.csdn.net/source/408426/ 内含全部源码(Delphi7)及可执行程序,欢迎大家使用。
- 文本文件编码转换器
- 基于cpdetector实现的文本文件编码转换器
- 文本文件编码 email编码
- Unicode 编码转换器 1.0
- Unicode 编码转换器
- Unicode 编码转换器
- Unicode编码转换器
- Unicode编码转换器
- 如何判断文本文件编码
- 如何判断文本文件编码
- 文本文件编码格式
- 批量转换文本文件编码
- Flex识别文本文件编码
- Flex识别文本文件编码
- 文本文件编码方式判断
- Flex识别文本文件编码
- 文本文件编码格式
- Android--判断文本文件编码
- fjnu 1908 小丁的试验
- VC++的malloc实现代码
- fjnu 1112 IMMEDIATE DECODABILITY
- Microsoft .Net Remoting系列专题之一:Net Remoting基础篇
- fjnu 1203 Maya Calendar
- 文本文件编码转换器
- 中国十大以貌取人的职业
- 第二人生的源码分析(三十四)读取通讯的消息模板
- fjnu 1884 Self Numbers
- Microsoft .Net Remoting系列专题之二:Marshal、Disconnect与生命周期以及跟踪服务
- 本命年
- thinking in java 笔记--java bean规则--2008.04.11
- fjnu 1758 三天打鱼两天晒网
- Microsoft .Net Remoting系列专题之三:Remoting事件处理全接触