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等的编码问题相关推荐

  1. 用UltraEdit判断打开文件的编码类型 用UltraEdit或notepad记事本查看文件编码格式 用UltraEdit查看当前文件编码...

    用UltraEdit查看当前文件编码 想判断文件的编码类型? 用强大的UltraEdit-32软件: UltraEdit-32的状态栏可以显示文件的编码类型,详细情况如下: ANSI/ANSCI--- ...

  2. 用editplus批量修改文件编码最快速的方法

    选中文件夹下面所有txt文件, 然后右键editplus打开,然后 文档->文本编码->批量修改文本编码 即可.

  3. 用UltraEdit判断打开文件的编码类型

    一直苦于无法判断文件的编码类型,现在发现一个方法,就是用强大的UltraEdit-32软件: UltraEdit-32的状态栏可以显示文件的编码类型,详细情况如下: ANSCI------------ ...

  4. PHP与Unicode签名(BOM)

    在编写或者修改用UTF-8编码保存的PHP文件时,有时会莫名其妙出现一些问题: 1. 页面显示一个"锘"字,其他一片空白: 2. 不能登入或者不能登出: 3. 页顶出现一条空白: ...

  5. php 签名 bom,PHP与Unicode签名(BOM,Byte Order Mark)

    在编写或者修改用UTF-8编码保存的PHP文件时,有时会莫名其妙出现一些问题: 1. 页面显示一个"锘"字,其他一片空白: 2. 不能登入或者不能登出: 3. 页顶出现一条空白: ...

  6. 7.Java常用开发工具

    文本编辑器 任意选一款 UltraEdit EditPlus notepad++ 集成开发环境 IDE:Integrated Development Environment --JBulider (基 ...

  7. php用什么打开_用什么软件可以打开php文件

    PHP 是一种新型的 CGI 程序编写语言.应该说是个嵌入式脚本文件.和ASP.JSP有很多类似的功能.唯一不同的是,ASP要整站的解释在传递,而PHP则可以嵌入HTML代码里,和HTML一起发送. ...

  8. notepad批量转换文件编码utf8、gbk

    从网上找了多个编码转换工具,自己也尝试写.从网上找python脚本,对文件进行批量转换,但转换结果都不理想,大部分文件都可以正常转换成UTF8,但少量文件转换后可能出现中文乱码的情况. 经过多次尝试, ...

  9. 卸载Notepad++!事实已证明,它更牛逼……

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 作者:lucida lucida.me/blog/subl ...

最新文章

  1. 恢复Ext3下被删除的文件
  2. python消息队列中间件_python-RabbtiMQ消息队列
  3. 【Java学习笔记九】多线程
  4. oracle 中累加函数,Oracle 分析函数分组累加!
  5. mysql教程多表查询_解析Mysql多表查询的实现
  6. Cocos2d-x.3.0开发环境搭建
  7. 哪个不是计算机使用的汉子编码,下列不是计算机上使用的汉字编码的是( )。 A.字型码 B.外码 C.内码 D.条形码...
  8. 禅道服务器修改ip,访问禅道服务器的ip地址
  9. HTMLParser(一个比较流行的html代码解析、处理开源项目)学习,总结
  10. 执行Hive SQL时报错:Map operator initialization failed
  11. 因网络延迟造成数据库插入相同记录,如何解决.
  12. 基于springboot vue uniapp点餐外码系统源码(毕设)
  13. 我们DevSkim、Jarvis和USG是这样子的
  14. (c语言)兔子繁衍问题
  15. CAPL学习之路-测试功能集函数(测试报告部分)
  16. [iOS开发]Category、Extension和关联对象
  17. 用FPGA开发板做一个I2CEEPROM的烧写器
  18. Motif-based Graph Self-Supervised Learning for Molecular Property Prediction
  19. QT导入百度地图<附代码及动图展示>
  20. 被鄙视的准程序员与GPRS上网卡

热门文章

  1. 猿创征文|Java中的IO流大家族 (两万字详解)
  2. 巴尔的摩古老的圣保罗教堂上的一首诗
  3. 什么是m3u8、f4v格式的文件
  4. 《设计模式系列》- 代理模式
  5. gooogle.com
  6. 小米小贷业务生变,消费贷业务并入小米消金
  7. PAT Basic 1014
  8. 业务分析(CBAP)第01讲:核心概念模型
  9. java语言(3):通俗易懂的泛型
  10. 用文本框输入来查处键盘的Uintin的值