UltraEdit editplus notepad等的编码问题
UltraEdit是一个非常强大的工具,但是,工具太强大了就会变成一个双刃剑,用好了是好工具,用不好可能会存在很多的疑惑,在编码方面UltraEdit存在一写令人费解的问题,本人做了一点点研究,与大家分享。
主要的问题来源于UTF-8的处理。
Unicode规范中推荐的标记字节顺序的方法是BOM(Byte Order Mark)
UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。
由于UTF-8 BOM并没有得到广泛的支持,所以造成了一定范围内的不兼容。下面列出几个主要工具对于BOM的处理。
1. notepad
notepad 在保存时,选择UTF-8 格式,会在文件头写上BOM header.读取文件时,会分析BOM和文件中是否有中文字符,进而做出正确的选择。
2. notepad++
可以设置各种格式,有无BOM都支持。
3. editplus
文件保存时,选择UTF-8 格式,不会在文件头写上 BOM header.读取可以识别UTF-8
4. ultraedit
ultraedit在advanced->configuration中可以选择文件保存时是否写上BOM header.或者另存为中选择。读取是,如果没有设置自动检测UTF-8或者部分无BOM文件会无法正常显示。
5. Eclipse
如果设置了文件的编码问UTF-8,那么文件保存为无BOM格式。读取正常。
6. vi
指的是Linux 下的vim, 如果UTF-8 文件开头有BOM header, 其能够正常显示UTF-8 编码,否则,显示为乱码。
UltraEdit的主要问题
1. 如果新建一个文件,选择保存为UTF-8 无 BOM格式,如果数据中没有中文字符,或者harset=UTF-8,那么无论怎么保存,UE仍然会把文件保存为ANSI格式,这样,以后再加入中文的时 候编码方式也不会改变,这就会造成Java Build程序生成的脚本含有乱码。
2. 如果是正确的UTF-8无BOM格式,在前9205个字符中如果没有中文,那么UE会顽固的认为此文件是ANSI格式,所以导致文件中文乱码(测试版本UE 13.10a)。解决办法就是主动的在前9205个字符前加入一个中文字符。
3. 哭笑不得的UTF-8自动检测。在advanced->configuration->Unicode/UTF-8 Auto Check中有自动检测UTF-8的选项,如果选择,经分析UE将采用三种检测方式:
a) 文件编码的开头是否有【EF BB BF】字符(即BOM),如果有则认为是UTF-8
b) 检查是否含有charset=UTF-8类似的文字,如果有,那么认为是UTF-8格式,这将导致以ANSI存储的文件乱码。
c) 如果是UTF-8无BOM格式的文档,UE会检查前9205个字符是否含有中文字符,如果有,如果没有则使用ANSI编码进行解析,造成后面的中文字符乱 码。如果这个时候强制的用UE转换为UTF-8,则乱上加乱,文件作废。对于本身是ANSI格式存储的文件,没有此检测,中文正常。
4. UE打开UTF-8的文件默认会转换为UTF-16,影响不大。
对于用户
1. UE打开乱码的问题,在前9205字符中加入中文注释可以解决此问题,或者使用在UE的【文件】菜单中的【转换】->【UNICODE/UTF-8 到 UTF-8(Unicode编辑)】进行转换。
2. 不要使用UE来新建无中文的UTF-8无BOM文件。
3. 不要在已经乱码的文件中,删除乱码然后添加中文再保存。
4. 新建UTF-8无BOM文件可以使用Eclipse、Notepad++、EditPlus进行
5. 对于记事本保存的UTF-8脚本文件,Java Build程序也是可以识别的,但是Java文件不能使用记事本编辑编辑器无法识别文件头的EF BB BF标记。
转载于:https://www.cnblogs.com/lishenglyx/archive/2009/02/18/1393216.html
UltraEdit editplus notepad等的编码问题相关推荐
- 用UltraEdit判断打开文件的编码类型 用UltraEdit或notepad记事本查看文件编码格式 用UltraEdit查看当前文件编码...
用UltraEdit查看当前文件编码 想判断文件的编码类型? 用强大的UltraEdit-32软件: UltraEdit-32的状态栏可以显示文件的编码类型,详细情况如下: ANSI/ANSCI--- ...
- 用editplus批量修改文件编码最快速的方法
选中文件夹下面所有txt文件, 然后右键editplus打开,然后 文档->文本编码->批量修改文本编码 即可.
- 用UltraEdit判断打开文件的编码类型
一直苦于无法判断文件的编码类型,现在发现一个方法,就是用强大的UltraEdit-32软件: UltraEdit-32的状态栏可以显示文件的编码类型,详细情况如下: ANSCI------------ ...
- PHP与Unicode签名(BOM)
在编写或者修改用UTF-8编码保存的PHP文件时,有时会莫名其妙出现一些问题: 1. 页面显示一个"锘"字,其他一片空白: 2. 不能登入或者不能登出: 3. 页顶出现一条空白: ...
- php 签名 bom,PHP与Unicode签名(BOM,Byte Order Mark)
在编写或者修改用UTF-8编码保存的PHP文件时,有时会莫名其妙出现一些问题: 1. 页面显示一个"锘"字,其他一片空白: 2. 不能登入或者不能登出: 3. 页顶出现一条空白: ...
- 7.Java常用开发工具
文本编辑器 任意选一款 UltraEdit EditPlus notepad++ 集成开发环境 IDE:Integrated Development Environment --JBulider (基 ...
- php用什么打开_用什么软件可以打开php文件
PHP 是一种新型的 CGI 程序编写语言.应该说是个嵌入式脚本文件.和ASP.JSP有很多类似的功能.唯一不同的是,ASP要整站的解释在传递,而PHP则可以嵌入HTML代码里,和HTML一起发送. ...
- notepad批量转换文件编码utf8、gbk
从网上找了多个编码转换工具,自己也尝试写.从网上找python脚本,对文件进行批量转换,但转换结果都不理想,大部分文件都可以正常转换成UTF8,但少量文件转换后可能出现中文乱码的情况. 经过多次尝试, ...
- 卸载Notepad++!事实已证明,它更牛逼……
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 作者:lucida lucida.me/blog/subl ...
最新文章
- 恢复Ext3下被删除的文件
- python消息队列中间件_python-RabbtiMQ消息队列
- 【Java学习笔记九】多线程
- oracle 中累加函数,Oracle 分析函数分组累加!
- mysql教程多表查询_解析Mysql多表查询的实现
- Cocos2d-x.3.0开发环境搭建
- 哪个不是计算机使用的汉子编码,下列不是计算机上使用的汉字编码的是( )。 A.字型码 B.外码 C.内码 D.条形码...
- 禅道服务器修改ip,访问禅道服务器的ip地址
- HTMLParser(一个比较流行的html代码解析、处理开源项目)学习,总结
- 执行Hive SQL时报错:Map operator initialization failed
- 因网络延迟造成数据库插入相同记录,如何解决.
- 基于springboot vue uniapp点餐外码系统源码(毕设)
- 我们DevSkim、Jarvis和USG是这样子的
- (c语言)兔子繁衍问题
- CAPL学习之路-测试功能集函数(测试报告部分)
- [iOS开发]Category、Extension和关联对象
- 用FPGA开发板做一个I2CEEPROM的烧写器
- Motif-based Graph Self-Supervised Learning for Molecular Property Prediction
- QT导入百度地图<附代码及动图展示>
- 被鄙视的准程序员与GPRS上网卡