好的工具的确能让工作事半功倍,尤其处理棘手的疑难问题时。接触过不少文本编辑器,其中有两个我觉得称得上处理编码问题的利器:Vim 和 wxMEdit,都是跨平台的开源软件。
http://www.vim.org/
http://wxmedit.github.io/zh_CN/
先说后者吧,它有些像 UltraEdit,可能更平易一些。本文早期版的这个编辑器本来是 MadEdit 的,大约是一位台湾朋友写的软件,中文支持不错,可惜目前无人维护。本来这也无妨,可是发现了它一个严重的 bug,可能会造成数据损失,于是 fork 了这个项目,就是 wxMEdit。wxMEdit 在 MadEdit 的基础上做了很多改善,其中包括处理编码相关功能改进:改善编码识别效果、支持 GB18030 及其 BOM、添加编码分组、添加 ISO-8859-16、Windows 1258、KOI8-R、KOI8-U 等编码支持、部分 bug 修复等。
wxMEdit 内置四种语法高亮风格,这是 Dark 风格下 python 程序语法高亮效果。
UltraEdit 所具有的语法高亮、多文件查找替换、正则匹配、编码识别和转换、列编辑和十六进制编辑这些功能,wxMEdit/MadEdit 都具有。若未用到 UltraEdit 更多的功能,甚至可以用它作为 UltraEdit 的替代品。
值得一提的是,wxMEdit/MadEdit 有两个方面完胜 UltraEdit,分别是十六进制编辑和编码的识别/转换。我就是在寻找更好的十六进制编辑器时发现 MadEdit 的,它的十六进制编辑功能的确强大,wxMEdit 在这方面改进包括十六进制串复制粘贴设置、覆盖粘贴等。这里只说编码相关的,它的十六进制编辑功能有两处编码相关的特性明显优于 UltraEdit:
1、十六进制编辑模式,右侧文本区域可以按各种支持的编码显示,而 UltraEdit 只有当前 locale 或者 UTF-16 两种编码支持。
2、wxMEdit 十六进制编辑显示的时原始二进制信息,如有 BOM 的 UTF-8 文本开头一定是 EF BB BF,而 UltraEdit 无论有没有 BOM 一律按照有显示,无论 UTF-8、UTF-16、UTF-32 一律按照 UTF-16 显示。
以经典的 Big5“許功蓋”问题为例:
打开该对应文本,然后从“查看->编码->东亚文字”选择“MS950”(Big5 的超集,微软扩展的 Big5 实现),然后切换到十六进制编辑模式,如上图。可以看出 wxMEdit 在简体中文(GBK/CP936)的操作系统环境中编辑 Big5 文本,其十六进制编辑模式的右侧文本区域还是可以正常按 Big5 编码显示(这在 UltraEdit 中是不可能的),且显示的是原始十六进制数据。另外可以看到其状态栏会显示文件的编码及行尾符信息。
然后从“查看->编码->西欧文字”选择“ISO-8859-1”(或者从“查看->编码->OEM”选择“CP437”等,总之就是选一个单字节编码)再看:
切换编码的同时,右侧文本区域会同步更新,如图所示。这样就不难理解“許功蓋”问题本质了:因为这些汉字的 Big5 编码的第二个字节是“\”('\x5C'),“\”这个字符在很多编程语言如 C、Bourne Shell、MySQL 等中都是用作转义字符,如果把这样的汉字当作西文(如 ISO-8859-1)来处理就可能引发编译错误、SQL 注入等问题。
我们再以只“wxMEdit - 跨平臺的文本/十六進制編輯器”这几个字的文本为例来看各种编码属性情况。先列下文件列表,其中文件名以 b 结尾的包含 BOM,文件名中 le 表示小端次序、be 表示大端次序:
-rw-r--r-- 1 jyw jyw 37 10月 30 16:04 wxmedit_b5.txt -rw-r--r-- 1 jyw jyw 37 10月 30 16:04 wxmedit_g.txt -rw-r--r-- 1 jyw jyw 41 10月 30 16:04 wxmedit_gb.txt -rw-r--r-- 1 jyw jyw 50 10月 30 16:04 wxmedit_u8.txt -rw-r--r-- 1 jyw jyw 53 10月 30 16:04 wxmedit_u8b.txt -rw-r--r-- 1 jyw jyw 48 10月 30 16:04 wxmedit_u16be.txt -rw-r--r-- 1 jyw jyw 50 10月 30 16:04 wxmedit_u16beb.txt -rw-r--r-- 1 jyw jyw 48 10月 30 16:04 wxmedit_u16le.txt -rw-r--r-- 1 jyw jyw 50 10月 30 16:04 wxmedit_u16leb.txt -rw-r--r-- 1 jyw jyw 96 10月 30 16:04 wxmedit_u32be.txt -rw-r--r-- 1 jyw jyw 100 10月 30 16:04 wxmedit_u32beb.txt -rw-r--r-- 1 jyw jyw 96 10月 30 16:04 wxmedit_u32le.txt -rw-r--r-- 1 jyw jyw 100 10月 30 16:04 wxmedit_u32leb.txt
可以看出包含 BOM 的文件要比同编码不含 BOM 的文件多几个字节(GB18030:4、UTF-8:3、UTF-16*:2、UTF-32*:4),即 BOM 所占字节数。
直接打开这些文件,wxMEdit 当可自动识别它们的编码。这也是 wxMEdit 适合编码(尤其中文)相关处理的又一亮点。编码识别效果改进也是 wxMEdit 相对于 MadEdit 的重要改进之一。分别切换各个文件,可以从状态栏很方便地看到各文件的编码属性,以“wxmedit_gb.txt”为例:
这些文件状态栏显示编码属性信息为:
wxmedit_b5.txt MS950
wxmedit_g.txt GB18030
wxmedit_gb.txt GB18030.BOM
wxmedit_u8.txt UTF-8
wxmedit_u8b.txt UTF-8.BOM
wxmedit_u16be.txt UTF-16BE
wxmedit_u16beb.txt UTF-16BE.BOM
wxmedit_u16le.txt UTF-16LE
wxmedit_u16leb.txt UTF-16LE.BOM
wxmedit_u32be.txt UTF-32BE
wxmedit_u32beb.txt UTF-32BE.BOM
wxmedit_u32le.txt UTF-32LE
wxmedit_u32leb.txt UTF-32LE.BOM
编码、大小端次序、有无 BOM 都包含了。
通过 wxMEdit/MadEdit 也可以很容易转换编码或者增删 BOM:
- 转换编码:“工具->转换文件编码…”然后选择新的编码即可。
- 增删BOM:“工具->有/没有Unicode BOM->删除/插入BOM”即可。
此外 wxMEdit 的十六进制插入、删除、替换都要比 UltraEdit 更加强大和易用。
wxMEdit 还支持字数统计、大小写转换、全半角转换、中文简繁转换等中文相关特殊功能。当然从 MadEdit 继承过来的的简繁转换效果不好,这是我打算接手并改善的地方之一。
wxMEdit 还适合打开比较大(如 100M 以上)的文件,它打开大文件时默认以十六进制模式打开。
其他的 wxMEdit 功能可以浏览下它的各个菜单。
如果没有其他 UltraEdit 特有的高级功能还在用,以免费、开源的 wxMEdit 来代替昂贵的 UltraEdit 是个不错的选择。
有任何问题和建议可以留言,或者发邮件给我 jiaywe[at]gmail.com。
相关推荐
**PSPad文本编辑器——编程利器** PSPad文本编辑器是一款专为程序员和文本工作者设计的强大编辑工具。它以其高效、灵活和多功能性在IT行业中受到广泛好评。这款编辑器不仅支持多种编程语言的语法高亮显示,高达27种...
【wxMEdit——高效全能的文件编辑利器】 wxMEdit是一款功能强大的文本编辑器,专为程序员、开发者以及日常文档处理者设计。它以其高效、易用和丰富的特性,在众多文本编辑器中脱颖而出,成为许多专业人士的首选工具...
普通人的编辑利器——VIM_(for_windows)
在iOS应用开发中,为用户提供一个功能丰富的文本编辑器是常见的需求。传统的文本输入控件可能无法满足复杂的需求,例如支持HTML格式的文本编辑。为了应对这种挑战,开发者们常常会寻找或创建可复用的组件来实现可视...
《EditPlus:高效便捷的文本编辑利器》 在IT领域,文本编辑器是开发者和普通用户日常工作中不可或缺的工具。本文将围绕“EditPlus文本编辑工具”这一主题,深入探讨其功能特性,以及如何利用这款汉化版软件提高工作...
**Emeditor文本编辑器——大数据处理的利器** Emeditor是一款专为处理大量数据而设计的专业文本编辑器,尤其适合大数据分析与处理工作。它以其强大的功能和高效的性能,被广泛推荐用于各类大数据比赛,以解决Excel...
一款优秀的支持语法高亮的开源免费的纯文本编辑器。在文字编辑方面与Windows写字板功能相当。当然,更重要的是,Notepad++更是程序员们编写代码的利器!它运行便携,体积小巧、资源占用小,支持众多程序语言,比如...
**Spaw文本编辑器——一款所见即所得的编辑利器** Spaw文本编辑器是一款针对网页制作和内容管理系统的轻量级、易于使用的文本编辑工具。它的最大特点是“所见即所得”(WYSIWYG),这意味着用户在编辑时可以直接...
6. **文本处理**:编辑器的核心是处理文本,这可能涉及到字符串操作,如查找、替换、格式化等。Java的String和StringBuilder类在其中起着关键作用。 7. **多线程**:尽管这是一个简单的文本编辑器,但为了提高用户...
"超大文本编辑器"是一款专门设计用于处理大型文本文件的高效工具,它能够在瞬间打开高达上吉(Gigabyte)级别的文本文件,这在传统的文本编辑器中是难以实现的。这款神器不仅适用于常规的文本编辑任务,还特别针对...
项目管理利器——maven,技术开发学习类稳定档案顶顶顶顶
EditPlus提供了许多高级特性,使得它在处理文本时更加高效。首先,它支持多种编程语言的语法高亮显示,如HTML、CSS、JavaScript、PHP、C/C++、Java等,这有助于开发者在编写代码时快速识别语法结构,提高编程效率。...
综上所述,EditPlus作为一款专业的文本编辑器,其丰富的功能和高度的自定义性使其在众多文本编辑工具中脱颖而出,是开发人员日常工作中不可或缺的利器。无论你是初学者还是经验丰富的开发者,都可以从中受益,提高...
免费全能文本编辑器Notepad++更是程序员们编写代码的利器!它运行便携,体积小巧、资源占用小,支持众多程序语言,比如C++、C#、Java等主流程序语言;支持HTML、XML、ASP,Perl、Python、JavaScript等网页/脚本语言...
Sublime Text 是一个代码编辑器(Sublime Text 2是收费软件,但可以无限期试用),也是HTML和散文先进的文本编辑器。Sublime Text是由程序员Jon Skinner于2008年1月份所开发出来,它最初被设计为一个具有丰富扩展...
grub4dos菜单编辑器 grubfordos菜单编辑器 学习grub4dos菜单编辑的利器 menu.lst菜单编辑器 menu.lst编辑器 它是用grub4dos引导学习menu.lst最好的方式 希望对大家有帮助 杀毒软件会报毒,但是大家不必担心无任何...
《传奇多功能脚本编辑器——高效开发传奇脚本的得力助手》 在游戏开发领域,尤其是对于传奇这种经典网络游戏的版本更新与维护,脚本编辑器扮演着至关重要的角色。"传奇多功能脚本编辑器"就是这样一款专为传奇脚本...
总的来说,TextPad-5.20作为一款强大的文本编辑器,以其大文件处理能力、拖放编辑、丰富的文本处理功能以及对编程和网页制作的良好支持,成为了Windows用户不可或缺的工具之一。无论你是程序员、网页设计师还是普通...
开放式工业控制系统的软件开发技术—— CODESYS V3 基础编程指南, CoDeSys 是德国3S 公司的PLC 编程软件,全球有近350 家知名的自动化产品和方案供应商是3S 公司的合作伙伴,这其中较著名 的有ABB 的Control ...