您的位置:首页 > 数据库

将自己的Access数据库通讯录导入手机通讯录

2007-07-14 17:22 411 查看
将自己的Access数据库通讯录导入手机通讯录
要换用儿子的Sony Ericsson K700手机。换手机本身没有什么,但让我最头痛的事情是换手机意味我原来手机里的几百个电话号码薄作废了,需要在新的手机里重新输入这几百个电话。在这 个问题上我一直对各手机开发厂商满肚子怨言,为什么不制定一个标准接口,让所有手机的电话号码薄能够相互传递,并能够传送到计算机上保存起来呢。但厂商为 了自身的利益坚决不这么做我也没有办法,就像手机生产厂商为了自己的利益坚决不把手机的充电器接口做成标准的接口一样让我么虽然不满,但毫不办法。
不过好在Sony Ericsson K700和我原来用的C网的Motorola V70老手机不一样,有红外接口,而我的手提也正好有红外接口。所以我想,不如借此机会,干脆花点时间和精力,看看能不能把我存在计算机上的Access 通讯录想办法传递到手机上去,这可能比仅仅抱怨手机制造厂商来得要实惠一些。
有了想法就开始动作,但动作起来的确遇到了很多困难,不过一步步总算基本解决,高兴之余,把操作步骤记录在此,以备以后需要时参考。
弄清手机电话薄格式 首先需要弄清手机通讯录的文字格式。在手机电话薄上输入几个号码,然后利用红外接口传递到计算机上,Sony Ericsson传递过来的文件是后缀为.vcf的文件,利用记事本打开,可以看见如下的记录格式片断:
BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-7:;+kJONd2W5-
TEL;CELL:13909001143
END:VCARD
BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-7:;+kJOP3I2F-
TEL;WORK:02887720508
TEL;HOME:02887721360
TEL;CELL:13608218098
END:VCARD
从文件可以看出,电话薄记录格式是VCARD格式的,而字符是UTF-7格式的。如果我们要把自己的Access电话薄导入到手机电话薄,我们需要首先从Access电话薄中的记录导出,并改写为上述格式的才行。
Access电话薄导出
我的Access电话薄是用表记录的,包含了姓名,手机号,工作电话,家庭电话和其它的一些信息。利用Access的导出功能,我们可以将其导入到一个 Excel或者其它格式的文件中。考虑到前面的VCARD的格式要求,导出的Access表中绝对没有如BEGIN:VCARD,VERSION:2.1 之类的专门标记,需要在导出的文件中添加这些标记,因此经权衡决定导出为Excel文件,在导出文件中,删除了其它不必要的列后,我们可以添加相应的列, 并在列中添加VCARD中需要的特定标志,如下所示:

VERSION:2.1
N;CHARSET=UTF-7:;
阿桑
TEL;WORK:
08376226485
TEL;HOME:
08376223763
TEL;CELL:
13909042632
END:VCARD
VERSION:2.1
N;CHARSET=UTF-7:;
白文玉
TEL;WORK:
TEL;HOME:
02887776976
TEL;CELL:
13980029620
END:VCARD
VERSION:2.1
N;CHARSET=UTF-7:;
班运翔
TEL;WORK:
02884761968
TEL;HOME:
02884761252
TEL;CELL:
13658000925
END:VCARD
VERSION:2.1
N;CHARSET=UTF-7:;
蔡畅韬
TEL;WORK:
02887720504
TEL;HOME:
02886134508
TEL;CELL:
028-89077210
END:VCARD
VERSION:2.1
N;CHARSET=UTF-7:;
蔡乐才
TEL;WORK:
TEL;HOME:
3930191
TEL;CELL:
13508170118
END:VCARD
VERSION:2.1
N;CHARSET=UTF-7:;
陈建
TEL;WORK:
TEL;HOME:
TEL;CELL:
13309006598
END:VCARD
添加特定标志的时候,最好直接从传递过来的vcf文件中拷贝相应的标志字符串以保证其正确性。
之后,利用Excel的另存为命令,把文件另存为一个Unicode的文本文件,为进一步的格式转换做好准备。
格式的转换
生成的Unicode文本文件格式如下:
BEGIN:VCARD VERSION:2.1 N;CHARSET=UTF-7:; 阿桑 TEL;WORK: 08376226485 TEL;HOME: 08376223763 TEL;CELL: 13909042632 END:VCARD
BEGIN:VCARD VERSION:2.1 N;CHARSET=UTF-7:; 白文玉 TEL;WORK: TEL;HOME: 02887776976 TEL;CELL: 13980029620 END:VCARD
BEGIN:VCARD VERSION:2.1 N;CHARSET=UTF-7:; 班运翔 TEL;WORK: 02884761968 TEL;HOME: 02884761252 TEL;CELL: 13658000925 END:VCARD
BEGIN:VCARD VERSION:2.1 N;CHARSET=UTF-7:; 蔡畅韬 TEL;WORK: 02887720504 TEL;HOME: 02886134508 TEL;CELL: 028-89077210 END:VCARD
BEGIN:VCARD VERSION:2.1 N;CHARSET=UTF-7:; 蔡乐才 TEL;WORK: TEL;HOME: 3930191 TEL;CELL: 13508170118 END:VCARD
BEGIN:VCARD VERSION:2.1 N;CHARSET=UTF-7:; 陈建 TEL;WORK: TEL;HOME: TEL;CELL: 13309006598 END:VCARD
利用Word打开生成的Unicode文本文件进行进一步格式转换。用Word是必须的。因为我们必须按照规定实现在规定的地方换行,同时,文件中的中文等字符实际并不是UTF-7字符格式,我们必须对其进行转换才能让手机识别,这些利用Word能够比较方便地完成。
首先利用Word的替换功能在应该进行回车的地方添加回车,如将“BEGIN:VCARD ”替换为“BEGIN:VCARD^l”,把“ TEL;WORK: “”替换为“^lTEL;WORK:“”等。这里需要注意的是,在替换“ N;CHARSET=UTF-7:; ”时应该在后面保留一个空格,这对后面的UTF编码转换会带来某种方便。
替换后的文本如下所示:
BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-7:; 阿桑
TEL;WORK:08376226485
TEL;HOME:08376223763
TEL;CELL:13909042632
END:VCARD
BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-7:; 白文玉
TEL;WORK:
TEL;HOME:02887776976
TEL;CELL:13980029620
END:VCARD
BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-7:; 班运翔
TEL;WORK:02884761968
TEL;HOME:02884761252
TEL;CELL:13658000925
END:VCARD
接着,注意立即利用替换删除掉没有号码存在的各项电话号码,即删除后面紧跟软回车的在标志字符“WORK:^l","HOME:^l”和“CELL:^l”,以保证生成号码的正确性。
之后,利用另存为命令重新保存该文件为扩展名为.vcf的文本文件,确定后,Word将会提问保存文本的格式,这里,注意选择“UTF-7”格式,让Word对如姓名这样的中文字符按照UTF-7格式进行转换。
生成的文件如下:
BEGIN:VCARD
VERSION:2.1
N+ADs-CHARSET+AD0-UTF-7:+ADs- +lj9oUQ-
TEL+ADs-WORK:08376226485
TEL+ADs-HOME:08376223763
TEL+ADs-CELL:13909042632
END:VCARD
BEGIN:VCARD
VERSION:2.1
N+ADs-CHARSET+AD0-UTF-7:+ADs- +dn1lh3OJ-
TEL+ADs-HOME:02887776976
TEL+ADs-CELL:13980029620
END:VCARD
BEGIN:VCARD
VERSION:2.1
N+ADs-CHARSET+AD0-UTF-7:+ADs- +c+2P0H/U-
TEL+ADs-WORK:02884761968
TEL+ADs-HOME:02884761252
TEL+ADs-CELL:13658000925
END:VCARD
利用记事本打开上述文件。观察一下变换的文件,我们可以看到,Word除了将名字这样的中文字符进行了UTF-7转换以外,对;等字符也进行了相应的转 换,使标志字符串和应有的格式不符,如标志串“N;CHARSET=UTF-7:;”被替换为“N+ADs-CHARSET+AD0-UTF-7:+ ADs- ”。我们知道,UTF-7字符格式对需要转换的字符包含在“+”和“-”号之间。这里,我们保留对中文名字的转换,而应将标志字符串“N;CHARSET =UTF-7:;”和“TEL;”替换回来。应该注意的是,如果我们在前一步Word中的替换中不在中文名字前保留一个空格,则中文名字不会但与的包含在 一个“+”和“-”对之间,而是标志字符串“N+ADs-CHARSET+AD0-UTF-7:+ADs-”融合在一起,成为“N+ADs- CHARSET+AD0-UTF-7:+ADs-dn1lh3OJ”这样的形式,我们则容易替换错误,破坏名字的UTF-7转换产生相应的问题,所以在 Word替换中在中文名字前保留一个空格是明智的。
替换完成后的文件如下:
BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-7:;+lj9oUQ-
TEL;WORK:08376226485
TEL;HOME:08376223763
TEL;CELL:13909042632
END:VCARD
BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-7:;+dn1lh3OJ-
TEL;HOME:02887776976
TEL;CELL:13980029620
END:VCARD
保存文件,然后将其发送到手机电话薄,哈哈,大功告成!!!
几句零碎
Sony Ericsson K700的电话薄容量显示其有510个电话号码。但传送过后才发现,实际我只传送了213个联系人,但已经显示占用了300多个记录,看来这个容量计算有吹牛的成分,估计应该是把每个电话都算着一个条目吧。
另外奇怪的是,我想一次把213个联系人传送到手机是不可能的,因为它只会传送一部分。我只能分两次才完全将213个联系人传送到了我的Sony Ericcsion K700上。
捣鼓这个玩意,花费了我好几个小时的时间,痛苦。不过与将几百个人输入到手机中比较起来,我还是非常满意的。我想,以后如果再需要向手机发送我数据库中的 联系人,我用不了这么多时间的。实际现在我全过程地走一遍从数据库传送通讯录到Sony Ericcsion K700中,只需要大约10多分钟的时间,这是值得高兴的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: