一、场景描述:
有一个Android工程或一个Java工程,工程的编码为GBK。此工程中的部分文件编码是GBK,另外部分文件的编码是UTF-8,现在要求将工程的编码设置为UTF-8,工程内所有文件统一为UTF-8编码,并且不产生乱码问题。
二、可选方案:
1.网上任意找一个所谓的转换工具。
利:简单;快速;
弊:不可控(二次危害);稳定性无法保证;无法保证所有文件全部转换成功;无法保证不产生乱码问题;
2.手工处理。
利:简单;有保证;
弊:成本高;周期长;研究成果无法重复利用;
3.利用网上已有Java小程序,修改之后使用。
利:研究成果可重复利用,可批量处理;有较高保证(这个保证以优良的Java小程序为前提);
弊:研究较复杂;小程序需要反复调试和测试,研究完成之后,还需要独立的将此小程序保存;仅研究者自己熟悉,不便于他人熟悉和学习;
4.利用Linux下的Shell命令。
利:批量处理;成熟稳定;速度也有保证;简单(几条命令的事);
弊:不易上手;一般人不知道这些命令;无法轻松的让这些串连起来成一个脚本,为自己所用(哈哈,我就是这样);不跨平台;
5.利用VIM的批处理命令。
利:非常简单;成熟稳定;结果有保证;批量处理;灵活;
弊:难以想到他的相关命令;难以将他的相关命令运用自如;
三、方案选择:
选择方案5:利用VIM的批处理命令
选择理由:
1.找到了他的相关命令
2.简单
3.稳定
4.灵活
5.跨平台
6.软件轻松可得
7.批量
8.本人之前就对VIM比较熟悉
9.args命令之前就使用过
四、具体流程:
1.下载一个最新版的VIM编辑器,并安装
2.找到你JAVA工程的资源目录
3.在资源目录的根目录创建一个“test.txt”文本文件(Linux下,无需这一步)
4.使用VIM打开此文本文件
5.在进入VIM的命令模式(默认,刚打开便进入的命令模式。如果你不小心进行了编辑模式,可以使用Esc键返回命令模式。<其实能进入VIM编辑模式的人,必然知道如何退出编辑模式>)
6.输入args命令。比如,你需要处理当前目录,以及当前目录的所有子目录下的所有java文件,你可以输入 :args **/*.java
,那txt文件呢?当然是 :args **/*.txt了。依此类推。多种类型或文件可以使用空格分隔。
7.输入argdo命令。比如,你需要将使用args命令打开的所有文件的编码设置为UTF-8,你可以输入 :argdo set fenc=utf-8 | update,或输入 :argdo set fileencoding=utf-8 | update ,那需要变为gbk呢?你可以输入 :argdo set fenc=cp936 | update ,同样,其它编码都可以设置。
8.最后wq退出。