Source Insight完美转换UTF-8 到 GB2312文/蒹葭
前言
很多人用source insight 打开某些源码文件时,汉字显示为一堆乱码。这个问题是因为编码方式不同。记事本和一些编辑器默认编码方式是ANSI,在这种方式下输入汉字,其实就是GB系列的编码方式。不幸的是,广收欢迎的代码查看工具Source insight 虽然支持汉字,但是它不支持UTF-8。笔者感到疑惑的是,当初开发source insight的这帮人现在哪里去了?为何不继续开发?这么好的工具,却不再更新了,实在让人可惜。
可惜归可惜,程序还是要看。乱码怎么办?很多人用笨方法,用记事本打开源代码,再另存为ANSI格式的文件。如果文件只有几个,倒是既简单又实惠,然而,当你碰到成百上千的代码文件都是UTF-8时,你就会觉得这是梦魇了。
不过,不要怕。现在,完美的解决方法来了。(貌似跟做广告一样)
概述
本程序是参考网上源代码修改而成。感谢原作者将该代码开源,我的工作只需在他的基础上进行修改就可以了,省去了大量的工作,使得我花了一个下午的时间就改成我所想要的程序。这就是开源的好处。所以说开源能帮助人们更快的开发出更好的软件,开源万岁。希望看到本文的读者,也能为开源事业贡献自己的一份力量。虽然说,此类代码到处都有,不足为奇,但这个代码在我改进之后,还是具有一些优点:
l 命令行执行 改进前的程序只能单独执行,根据提示输入参数和要转换的目录或文件;改进后的程序可集成到编辑器,集成开发环境(IDE)中。下文将会介绍如何集成到source insight中。
l 智能识别编码方式 原来的程序不能识别编码方式。如果转换时选择了一个非UTF-8编码的文件,转换后就成了乱码;改进后的程序能智能识别编码方式,无论是UTF-8文件是BOM格式还是非BOM格式,都能识别。对于纯ASCII码的文件,也能识别。
l 支持批处理 改进前的程序有bug,对目录支持不完善;改进后的程序能很好的支持批处理。
目前,这个程序只针对源代码文件编写,支持后缀名为 .c .cpp .cxx .h .xml .java .txt等文件。如确实有需要,今后将支持更多类型的文件编码格式转换。
如何集成到 source insight?
下面,先介绍如何集成到 source insight里。本人使用的汉化版,如英文版请对照执行。
文件转换命令 该命令能将当前打开的文件进行编码转换。很简单,步骤如下:
在source insight里,选择 “选项”—“自定义命令”,弹出对话框后,点击“添加”,输入新命令名 CodeConvert File 。确定后,点击“浏览”,选择我们的codeConvert.exe程序路径。在输入框里加上参数” –u2g %f” (注意空格,双引号不要)。
这样,这个文件转换命令就添加成功。打开某个文件,按照上面步骤,选择该自定义命令点击“运行”,即可进行转换。
目录转换命令 该命令能将当前打开的文件所在的文件夹进行编码转换。步骤同上,只是在输入框里的参数改为” –u2g %d” (注意空格,双引号不要)。
怎么样?在source insight里点几下,就能转换了。混沌世界一下子清晰了。
感谢前辈无私分享,本人对以上源码做了裁剪和重写,只保留了三个文件(核心的转换类),做了部分去Windows化(主要是LPSTR stdafx.h 之类的东东,并将项目改成了DEVC++项目 ),去掉了整个目录的转换 功能 ,修改成了适合自己使用的主要处理单文件转化(-utg %f)和恢复(-g2u %f)的版本,我相信这也是大多数人需要的,因时间有限,可能还有纰漏之处。
附件提供DEVC++的项目文件及源码
原文及原始码请参考Source Insight完美转换UTF-8 到 GB2312