艰辛的通讯录导入
本文可自由转载,但请遵循“署名-非商业用途-保持一致”的创作共用协议。 永久链接:JoeCen's 小猫窝-----------------------------
买新手机后最重要的是将通讯录导入。由于之前使用的T310功能不多,我也没有仔细去研究,所以通讯录一直没有导到电脑中。现在我发现,将旧手机的通讯录导入到新手机(Nokia 6280)中并不是那么一件简单的事情。
T310有红外线发送联系人的功能,发了一个给6280,发现能用,太开心了!不过,我有几百个联系人,不可能让我按几百次吧!T310还有个发送全部联系人的功能(似乎索爱的功能比较人性化喔),试发了一下,6280并不能用。
第2个问题是我的T310是澳门的水货,操作系统是繁体的,虽然说6280能显示出来,但是看着不爽,我还要将所有繁体的名字更改为简体。
也就是说,我的需求是将T310的联系人批量导出,并将里面的繁体字符更改为简体字符,再批量导入到6280中。
首先,两个手机的牌子不同,操作系统也不一样。那么,联系人的保存方式是否一样呢?
为了确认这一点,必须先将手机连接到电脑中。
1、在电脑中安装Nokia最新的的”PC套件“,用“pc套件”的方式将6280连接到电脑中,随便导出一个联系人,发现是使用通用的”vcf“后缀的”vcard“格式。
2、让T310连接到电脑中,在SonyEricsson 的网站上下载T310的驱动(Sony Ericsson Modem Scripts),然后打开红外线,使用红外线连接到电脑中(我找不到数据线了)。从某论坛中下载MobileAgent,一个著名的索爱手机的管理软件,使用其导出T310的联系人。这里注意要下载最新版本(floAtMobileAgent-0.1.1.14)的,旧版的不支持导出为vcf格式。
确认两款手机都可以将联系人导出为vcf格式后,就要解决棘手的编码问题了。T310原版的vcf的格式如下:
BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-8:;B鐧介惮椋
TEL;HOME:0208000000
TEL;WORK:+86130000000
TEL;CELL:+86130000000
UID:9DDA8331-EEA2-4161-8B7C-DF87E4371A9F
X-IRMC-LUID:000055000000
END:VCARD
直接拷到6280上会变乱码。很明显的,vcard的格式是以关键字"BEGIN"开始,"END"结束的。而我需要更改编码的地方应该就是第三行的“N;CHARSET=UTF-8:;B鐧介惮椋 ”了。怎么办呢?还是在cygwin中写个脚本好了。
vcf的文件名也是繁体,但是却没有乱码,我的思路是先将所有vcf的文件都改成简体的名字,再将这些简体的名字取代文件中第三行的乱码。
第一步,使用脚本来生成改名字的脚本:
for name in `ls ./source/`
do
echo "mv ./source/$name ./tmp/`echo $name |cut -b 3-`" >> change.sh
done
使用“cut”的原因是T310导出的时候文件名前面自动生成了两个无关的字符,这里要去掉。这样就生成了一个改名字的脚本change.sh。格式如下:
mv ./source/廣州.vcf ./tmp/广州.vcf
第二步、是要将后面的名称更改为简体。使用winword(我暂时只想到这个办法)打开change.sh,鼠标选择右边的一列(按住ALT),然后用word的繁简转换功能进行转换。 好了,现在可以运行change.sh脚本,将所有vcf文件的名字更改为简体了!
第三步、是要更改vcf文件中的CHARSET字段。脚本如下:
cd tmp
for name in `ls`;do
real_name=`echo $name |awk -F. '{print $1}'`
grep --binary-files=text -v CHARSET $name |sed -e "s/VERSION:2.1/VERSION:2.1\nN\;CHARSET=GB2312\:\;$real_name/g" > tmp.file
mv tmp.file $name
done
主要功能是先使用gerp将vcf文件中带有“CHARSET”字段的行过滤掉,再用sed将“CHARSET”重新加入,当然是在将名字改为简体后加入喽。
为什么不直接用sed替换呢?比如:
sed -e "s/CHARSET=UTF-8\:\;.*/CHARSET=GB2312\:\;$name/g"
因为实际运行中发现,该行的末尾带有一个特殊的隐藏字符“^@",使用sed不能将该字符替换,而该字符的存在会导致改vcf文件不能导入到6280中。
好了,脚本完成后就可以将所有vcf文件直接拖入6280的”PC套件“的”联系人“文件夹中了!顺利完成通讯录的导入!:)
[UPDATE] 更新一下:回家后发现虽然电脑上的Nokia pc套件中可以正常显示联系人,但是在手机上看却只有电话号码,联系人的名称却是空的。看来是Pc套件能显示这种格式,而手机上却不能。解决的办法是在“PC 套件”中重新保存一下每个联系人。看来还是摆脱不了手工更改每个联系人的命运呀!:(