UltraEdit编码问题

简介:
2008 - 05 - 26   17 : 27
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
-& gt;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 -& gt;configuration -& gt;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的【文件】菜单中的【转换】 -& gt;【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标记。

本文转自博客园沉睡森林@漂在北京的博客,原文链接:UltraEdit编码问题,如需转载请自行联系原博主。

目录
相关文章
|
JSON Java 数据格式
6. 二十不惑,ObjectMapper使用也不再迷惑(下)
6. 二十不惑,ObjectMapper使用也不再迷惑(下)
6. 二十不惑,ObjectMapper使用也不再迷惑(下)
|
JSON 小程序 数据安全/隐私保护
小程序动态调试-解密加密数据与签名校验
本文主要讲解微信小程序加密、验签的情况下如何进行动态调试已获取签名以及加密信息
|
Java
《Java并发库系列三》一newSingleThreadScheduledExecutor
newSingleThreadScheduledExecutor:产生一个ScheduledExecutorService对象,这个对象的线程池大小为1,如果任务多于一个,任务将按先后顺序执行。
1407 0
|
3月前
|
编解码 算法 自动驾驶
【雷达通信】用于集成传感和通信的OFDM雷达传感算法(Matlab代码实现)
【雷达通信】用于集成传感和通信的OFDM雷达传感算法(Matlab代码实现)
432 125
|
10月前
|
人工智能 JavaScript 前端开发
通义灵码极好
通义灵码是阿里云推出的一款AI编程助手,基于大模型技术,支持多种编程语言,提供智能代码补全、优化建议、Bug诊断等功能,显著提升编码效率和代码质量。本文详细评测其核心功能,对比GitHub Copilot,并推荐给国内开发者及阿里云生态用户。评分:4.5/5。
800 1
通义灵码极好
|
机器学习/深度学习 搜索推荐 语音技术
前沿探索:融合语音克隆与TTS技术实现个性化语音助手
【10月更文挑战第20天】随着人工智能技术的迅猛发展,语音助手已经成为我们日常生活不可或缺的一部分。然而,传统的语音助手往往缺乏个性化元素,无法充分满足用户的独特需求。作为技术专家或研究人员,我一直致力于探索如何将语音克隆(Voice Cloning)技术与文本到语音(Text-to-Speech, TTS)技术相结合,创造出更加个性化且自然流畅的语音助手。本文将分享我的研究成果和个人观点,希望能为这一领域的未来发展提供一些启示。
605 2
前沿探索:融合语音克隆与TTS技术实现个性化语音助手
|
机器学习/深度学习 前端开发 JavaScript
230+本图灵编程高清文字版无水印电子书合集【制作不易,点赞收藏❤️】
今日精选,200余本图灵出版的高质量编程电子书,覆盖编程、系统架构、算法及机器学习等热门领域,助你全面提升技术能力。无论你是初学者还是资深开发者,都能从中找到适合自己的学习资源,从《Python编程:从入门到实践》到《深度学习入门》,每一本书都将是你技术成长道路上的良师益友,帮助你在瞬息万变的技术浪潮中站稳脚跟,稳步前行。
509 2
ly~
|
数据可视化 BI API
除了 OpenGL,还有哪些常用的图形库可以在 C 语言中使用?
除了OpenGL,C语言中还有多个常用的图形库:SDL,适合初学者,用于2D游戏和多媒体应用;Allegro,高性能,支持2D/3D图形,广泛应用于游戏开发;Cairo,矢量图形库,支持高质量图形输出,适用于数据可视化;SFML,提供简单接口,用于2D/3D游戏及多媒体应用;GTK+,开源窗口工具包,用于创建图形用户界面。这些库各有特色,适用于不同的开发需求。
ly~
3090 4