好的工具的确能让工作事半功倍,尤其处理棘手的疑难问题时。接触过不少文本编辑器,其中有两个我觉得称得上处理编码问题的利器: 和 ,都是跨平台的开源软件。
先说后者吧,它有些像 ultraedit,可能更平易一些。本文早期版的这个编辑器本来是 的,大约是一位台湾朋友写的软件,中文支持不错,可惜目前无人维护。本来这也无妨,可是发现了它一个严重的 bug,可能会造成数据损失,于是 fork 了这个项目,就是 。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 十六进制编辑显示的时原始二进制信息,如有 的 utf-8 文本开头一定是 ef bb bf,而 ultraedit 无论有没有 bom 一律按照有显示,无论 utf-8、utf-16、utf-32 一律按照 utf-16 显示。
以经典的 为例:
打开该对应文本,然后从“查看->编码->东亚文字”选择“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。
相关推荐
一款比较强大的编辑器,支持27中语法高亮。绿色软件,解压出来就能用。支持project。
普通人的编辑利器——vim_(for_windows)
一款优秀的支持语法高亮的开源免费的纯文本编辑器。在文字编辑方面与windows写字板功能相当。当然,更重要的是,notepad 更是程序员们编写代码的利器!它运行便携,体积小巧、资源占用小,支持众多程序语言,比如...
项目管理利器——maven,技术开发学习类稳定档案顶顶顶顶
python基础——笔试面试利器
免费全能文本编辑器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最好的方式 希望对大家有帮助 杀毒软件会报毒,但是大家不必担心无任何...
【java代码之美】 -- java必会的工具库,减少代码量的利器(csdn)————程序
《plc综合开发利器——codesys基础编程及应用指南》
文本替换的利器,批量文本替换的不二之选,站长必备,挂马网页杀手,支持所有纯ansi文件,支持gbk/unicode/utf8编码的htm、html、asp、java、php等文件,可自定义所支持的文件类型,支持16进制替换,支持单行和多行...
unigui 是delphi fan 开发web应用的利器,快捷而又无需...笔者将网上的js富文本编辑器wangeditor引入unigui,并在wangeditor中自定义菜单,用 ajax调用unigui的文件上传控件,巧妙的解决图片、附件、视频的上传问题。
前端框架利器——bootstrap
crm——销售管理之利器.doc
ftp利器——filezilla,filezilla_3.13.1_win64-setup.exe
文本替换的利器,批量文本替换的不二之选,站长必备,挂马网页杀手,支持所有纯ansi文件,支持gbk/unicode/utf8编码的htm、html、asp、java、php等文件,可自定义所支持的文件类型,支持16进制替换,支持单行和多行...
深度学习利器——tensorflow程序设计 ,深度学习框架tensorflow入门