franksunny的个人技术空间
获得人生中的成功需要的专注与坚持不懈多过天才与机会。 ——C.W. Wendte

 

关于vCardSymbian上的操作

 

前阵子关于Symbian通讯录操作的时候曾提到vCard,但是由于当时项目比较紧,所以也没有时间整理,今天特意抽了点时间小试了一下,发现很多手机(我试了下索爱的和诺基亚的)如果选中通讯录中的记录发送联系人或者发送名片之类的操作,就是会以vcf文件格式进行发送。不过手机上的vcf文件通常是用UTF-8编码的,所以虽然可以用outlook打开,但是打开之后中文也是乱码,必须要用特定软件打开才能进行编辑,目前我找了很多软件,但是抱歉得很,还没有找到该类能够编辑中文的软件。

 

以下信息摘自百度知道:http://baike.baidu.com/view/495045.htm

vCard其实是一种数据规范格式,通常后缀名为vcf而已,当然也可以存成txt文件。这一规范容许公开个人数据交换 (Personal Data Interchange PDI) 信息,在传统纸质商业名片可找到这些信息。规范定义电子名片(或叫vCard)的格式。

vCard规范可作为各种应用或系统之间的交换格式。定义的格式与传送的方法无关。传送交换可能是文件系统,点对点交换的公共电话网络,以有线网络或无线传送的方式。用户能在互联网上直接利用vCard。电子邮件能转发在vCard中人信息。网页上很多用户填写的表格可自动使用vCard

互联网邮件协会(Internet Mail Consortium)正在与互联网工程队伍(Internet Engineering Task Force IETF)共同努力,扩充以多用途互联网邮件为基础(Internet MIME-based)的互联网电子邮件标准标准,使之兼容vCardvCard规范的XML绑定生成了DTD [vCard 98] 有助于开发IMS LIP

 

VCard 2.1rfc2426)标准通信薄基本格式

VCard 数据格式的标识符是VCARD

预定义的类型:SOURCE, NAME, PROFILE, BEGIN, END.

新增加的类型:FN, N, NICKNAME, PHOTO, BDAY, ADR, LABEL, TEL, EMAIL,

MAILER, TZ, GEO, TITLE, ROLE, LOGO, AGENT, ORG, CATEGORIES, NOTE,

PRODID, REV, SORT-STRING, SOUND, URL, UID, VERSION, CLASS, KEY

预定义的参数:ENCODING, VALUE, CHARSET, LANGUAGE, CONTEXT.

新增加的参数:TYPE

预定义的值类型:uri, date, date-time, float

新增加的值类型:binary, phone-number, utc-offset and vcard value

 

vCard数据格式行

vCard的数据格式行形式为:类型 [;参数]:值。具体见如下示例:

ADR;HOME;POSTAL;PARCEL:;;街道地址;深圳;广东;433330;中国

ADR:是一个类型,表示是一条地址信息;

;”号是分隔符合;

HOME;POSTAL;PARCEL表示参数,表示ADR的用途或者是类别,只是由于修饰类型;

:”表示值域的开始,值域的内容与参数并没有直接关系是配对的;

;;街道地址;深圳;广东;433330;中国 表示是一个具体的ADR值(地址值)

 

预定义类型的用法

BEGIN END 类型

Vcard内容必须以BEGIN:VCARD开头,以END:VCARD结尾

参考一个vcard的例子1

BEGIN:VCARD

VERSION:2.1

N:;

FN:姓名NICKNAME:nickName

ORG:公司;部门

TITLE:职位

NOTE;ENCODING=QUOTED-PRINTABLE:=C6=E4=CB=FB

TEL;WORK;VOICE:电话1

TEL;WORK;VOICE:电话2

TEL;HOME;VOICE:电话1

TEL;HOME;VOICE:电话2

TEL;CELL;VOICE:13590342862

TEL;PAGER;VOICE:0755

TEL;WORK;FAX:传真

TEL;HOME;FAX:传真

ADR;WORK:;;单位地址;深圳;广东;433000;国家

LABEL;WORK;ENCODING=QUOTED-PRINTABLE:=B5=A5=CE=BB=B5=D8=D6=B7

=C9=EE=DB=DA

=B9=E3=B6=AB

433000

=B9=FA=BC=D2

ADR;HOME;POSTAL;PARCEL:;;街道地址;深圳;广东;433330;中国

LABEL;HOME;ENCODING=QUOTED-PRINTABLE:=BD=D6=B5=C0=B5=D8=D6=B7

=C9=EE=DB=DA

=B9=E3=B6=AB

433330

=D6=D0=B9=FA

URL:网址

URL:单位主页

EMAIL;PREF;INTERNET:邮箱地址

X-QQ:38394246

X-ICQ:icq

X-WAB-GENDER:2

REV:20060220T180305Z

END:VCARD

 

NAME类型

如果在内容中出现NAME类型那么它的值是一个可以显示的描述vCard源的文本。

PROFILE类型

如果出现PROFILE类型,那么它的值必须是“VCARD

SOURCE类型

如果包含SOURCE类型,它的值提供一些怎样找到vCard源的信息

预定参数的用法

LANGUAGE

参考[MIME-DIR]文档

ENCODING

参考[MIME-DIR]文档

VALUE

参考[MIME-DIR]文档

预定义值类型的用法

[MIME-DIR]中预定类型的值一定不能包含用逗号分开的列表NNICKNAME,ADRCATEGORIES值类型外。

BINARY

表明类型的值是二进制的主要应用在类型PHOTO, LOGO, SOUND, and KEY.

ENCODING参数的值必须指定为B

二进制的内容的编码参考[RFC 2047]

VCARD

表示一个类型的值是一个vCard对象

PHONE-NUMBER

表示类型的值是一个电话号码

UTC-OFFSET

表示时间

结构类型的值

复合类型值是用分号分开的字段的集合,复合类型值中避免使用分号,如何需要使用分号,需要用“\”分号替代行的限定和分行,参考[MIME DIR],如果行的长度超过了75个字符,那么必须分行。

 

VCard 特征

标识类型

FN 类型定义

目的:vcard对象的名称,一个vcard对象必须包含FN类型。

例子:FN:Mr. John Q. Public\, Esq.

N类型定义

目的:FN表示一个vcard对象的名称,N表示这个对象名称的组成部分

例子:N:Public;John;Quinlan;Mr.;Esq.

N:Stevenson;John;Philip,Paul;Dr.;Jr.,M.D.,A.C.P.

各个组成部分可以用分号分号,每个组成部分可以用逗号。

NICKNAME类型定义

目的:表示别名

例子:NICKNAME:Robbie

NICKNAME:Jim,Jimmie

PHOTO类型定义

目的:vcard对象的图像信息

例子:PHOTO;VALUE=uri:图片地址

PHOTO;ENCODING=b;TYPE=JPEG:MIICajCCAdOgAwIBAgICBEUwDQYJKoZIhvcN

AQEEBQAwdzELMAkGA1UEBhMCVVMxLDAqBgNVBAoTI05ldHNjYXBlIENvbW11bm

jYXRpb25zIENvcnBvcmF0aW9uMRwwGgYDVQQLExNJbmZvcm1hdGlvbiBTeXN0

<...remainder of "B" encoded binary data...>

如果使用内联的二进制数据表示图片信息,那么;ENCODING=b

BDAY类型定义

目的:表示出生日期

例子:BDAY:1996-04-15

BDAY:1953-10-15T23:10:00Z

BDAY:1987-09-27T08:30:00-06:00

 

地址类型

ADR 类型定义

目的:是一个组合,用来表示一个地址信息,值类型是一个用分号分开的文本值

例子:ADR;TYPE=dom,home,postal,parcel:;;123 Main Street;Any Town;CA;91921-1234;A

ADR;HOME;POSTAL;PARCEL:;;街道地址;深圳;广东;444444;中国

组合由以下七个部分顺序的组成:

the post office box;

the extended address;

the street address;

the locality (e.g., city);

the region (e.g., state or  province);

the postal code;

the country name

如果,其他的一个部分没有,必须用分号分开

type 参数的说明

"dom"  国内地址

"intl" 国际地址

"parcel"包裹递送地址

"home" 居住地址;

"work"工作地址;

"pref" 有多个地址的时候,优先的地址

缺省的"TYPE=intl,postal,parcel,work",可以替换 

LABEL类型定义

目的:是一格式化的文本值,表示一个地址

例子:LABEL;TYPE=dom,home,postal,parcel:Mr.John Q. Public\, Esq.\n

         Mail Drop: TNE QB\n123 Main Street\nAny Town\, CA  91921-1234

         \nU.S.A.

type 参数的说明

"dom"  国内地址

"intl" 国际地址

"parcel"包裹递送地址

"home" 居住地址;

"work"工作地址;

"pref" 有多个地址的时候,优先的地址

缺省的"TYPE=intl,postal,parcel,work",可以替换

ADR的不同是 ADR的值是用分号分开的数据,LABEL就是一个格式化的文本。

电话通信地址类型

TEL类型定义

目的:指定一个电话号码

例子:TEL;TYPE=work,voice,pref,msg:+1-213-555-1234

说明:值是一个规范的全球唯一的电话号码

TYPE参数的值有:

"home"表示家庭电话

"msg" 表示这个号码支持语音

"work" 工作电话

"pref" 表示多个电话中最喜欢使用的电话

"voice" 声音电话号码

"fax"传真号码

"cell" 表示手机电话

"video" 视频电话

"pager" 调度电话,估计是总机的电话

"bbs" 公开的广播系统的电话

"modem" 调制解调器电话

"car"汽车电话

"isdn" ISDN连接电话号码

"pcs" 个人通信服务电话

缺省是 "voice".

TYPE参数的用法是TYPE=work;TYPE=voice或者"TYPE=work,voice",缺省值可以被重置"TYPE=work,home,voice,fax".

EMAIL类型定义

目的:指定一个电子邮件

例子:EMAIL;TYPE=internet:邮箱地址

    EMAIL;TYPE=x400:邮箱地址

    EMAIL;TYPE=internet,pref:邮箱地址

TYPE参数的使用

"internet" 表示一个internet 类型地址

"x400" 表示是一个 X.400 地址

"pref"最喜欢使用的邮件电子

缺省是"internet".

MAILER 类型定义

目的:指定一个电子邮件发送者

例子:MAILER:PigeonMail 2.1

地理类型

TZ类型定义

目的:时区信息

例子:TZ:-05:00

      TZ;VALUE=text:-05:00; EST; Raleigh/North America

缺省是一个utc-offset.

GEO类型定义

目的:地理位置信息

例子GEO:37.386013;-122.082932

     CEO 经度;纬度

组织类型

TITLE类型定义

目的:工作位置,工作职能(job title

例子TITLE:Director\, Research and Development

ROLE 类型定义

目的:公司的职业(occupation

例子ROLE:Programmer

LOGO类型定义

目的:公司logo,是一个图像信息

例子LOGO;VALUE=uri:图片地址

LOGO;ENCODING=b;TYPE=JPEG:MIICajCCAdOgAwIBAgICBEUwDQYJKoZIhvcN         AQEEBQAwdzELMAkGA1UEBhMCVVMxLDAqBgNVBAoTI05ldHNjYXBlIENvbW11bm

ljYXRpb25zIENvcnBvcmF0aW9uMRwwGgYDVQQLExNJbmZvcm1hdGlvbiBTeXN0

<...the remainder of "B" encoded binary data...>

说明:TYPE知道图像的格式,ENCODING=b表示是二进制的数据流URI表示是一个外部图像对象

AGENT类型定义

目的:指定另外一个人替换他的个人行为

例子:AGENT;VALUE=uri: CID:JQPUBLIC.part3.960129T083020.邮箱地址

         AGENT:BEGIN:VCARD\nFN:Susan Thomas\nTEL:+1-919-555-

         1234\nEMAIL\;INTERNET:主机地址\nEND:VCARD\n

说明:缺省是一个Vcard对象,当时也可是一个URI指定的外部Vcard对象

ORG类型定义

目的:表示一个组织的名称

例子ORG:ABC\, Inc.;North American Division;Marketing

解释类型

CATEGORIES类型定义

目的:vcard应用的分类信息

例子:CATEGORIES:TRAVEL AGENT

      CATEGORIES:INTERNET,IETF,INDUSTRY,INFORMATION TECHNOLOGY

NOTE 类型定义

目的:对vcard的注释和说明

例子:NOTE:This fax number is operational 0800 to 1715

          EST\, Mon-Fri.

PRODID类型定义

目的:指定创建Vcard对象的产品的ID

例子:PRODID:-//ONLINE DIRECTORY//NONSGML Version 1//EN

REV类型定义

目的:指定当前Vcard的修改信息

例子:REV:1995-10-31T22:27:10Z

      REV:1997-11-15

SORT-STRING类型定义

目的:指定家庭名称或者其他名称对FNN类型排序

例子:  FN:Rene van der Harten

        N:van der Harten;Rene;J.;Sir;R.D.O.N.

        SORT-STRING:Harten

        FN:Robert Pau Shou Chang

        N:Pau;Shou Chang;Robert

        SORT-STRING:Pau

        FN:Osamu Koura

        N:Koura;Osamu

        SORT-STRING:Koura

        FN:Oscar del Pozo

        N:del Pozo Triscon;Oscar

        SORT-STRING:Pozo

        FN:Chistine d'Aboville

        N:d'Aboville;Christine

        SORT-STRING:Aboville

SOUND类型定义

目的:指定Vcard的数字声音信息,缺省是指定vcardname类型的发音信息。

例子:  SOUND;TYPE=BASIC;VALUE=uri:CID:JOHNQPUBLIC.part8.

        19960229T080000.地址

        SOUND;TYPE=BASIC;ENCODING=b:MIICajCCAdOgAwIBAgICBEUwDQYJKoZIhvcN         AQEEBQAwdzELMAkGA1UEBhMCVVMxLDAqBgNVBAoTI05ldHNjYXBlIENvbW11bm         ljYXRpb25zIENvcnBvcmF0aW9uMRwwGgYDVQQLExNJbmZvcm1hdGlvbiBTeXN0  <...the remainder of "B" encoded binary data...>

可以用URI指定一个外部声音二进制流

可以是内置的声音二进制流,ENCODING=b

UID类型定义

目的:指定一个全球唯一的个人或资源标识。

例子:UID:19950401-080045-40000F192713-0052

URL类型定义

目的:指定Vcard 参考的路径。

例子:URL: 网址

VERSION类型定义

目的:指定Vcard使用的vcard规范的版本。

例子:  VERSION:3.0

Security 类型

CLASS类型定义

目的:指定访问Vcard对象的访问分级。

例子:  CLASS:PUBLIC

        CLASS:PRIVATE

        CLASS:CONFIDENTIAL

说明:安全分级需要参考目录服务的访问分级

KEY 类型定义

目的:指定Vcard的公共钥匙值(加密解密是使用)或者是授权认证。

例子:  KEY;ENCODING=b:MIICajCCAdOgAwIBAgICBEUwDQYJKoZIhvcNAQEEBQA

         wdzELMAkGA1UEBhMCVVMxLDAqBgNVBAoTI05ldHNjYXBlIENbW11bmljYX

         Rpb25zIENvcnBvcmF0aW9uMRwwGgYDVQQLExNJbmZvcm1hdGlvbiBTeXN0

         ZW1zMRwwGgYDVQQDExNyb290Y2EubmV0c2NhcGUuY29tMB4XDTk3MDYwNj

         E5NDc1OVoXDTk3MTIwMzE5NDc1OVowgYkxCzAJBgNVBAYTAlVTMSYwJAYD

         VQQKEx1OZXRzY2FwZSBDb21tdW5pY2F0aW9ucyBDb3JwLjEYMBYGA1UEAx

         MPVGltb3RoeSBBIEhvd2VzMSEwHwYJKoZIhvcNAQkBFhJob3dlc0BuZXRz

         Y2FwZS5jb20xFTATBgoJkiaJk/IsZAEBEwVob3dlczBcMA0GCSqGSIb3DQ

         EBAQUAA0sAMEgCQQC0JZf6wkg8pLMXHHCUvMfL5H6zjSk4vTTXZpYyrdN2

         dXcoX49LKiOmgeJSzoiFKHtLOIboyludF90CgqcxtwKnAgMBAAGjNjA0MB

         EGCWCGSAGG+EIBAQQEAwIAoDAfBgNVHSMEGDAWgBT84FToB/GV3jr3mcau

         +hUMbsQukjANBgkqhkiG9w0BAQQFAAOBgQBexv7o7mi3PLXadkmNP9LcIP

         mx93HGp0Kgyx1jIVMyNgsemeAwBM+MSlhMfcpbTrONwNjZYW8vJDSoi//y

         rZlVt9bJbs7MNYZVsyF1unsqaln4/vy6Uawfg8VUMk1U7jt8LYpo4YULU7

         UZHPYVUaSgVttImOHZIKi4hlPXBOhcUQ==

扩展类型

可以定义自己的类型,自己定义的类型需要以“x-”开头

比如例子中的信息:

X-QQ:000000

X-ICQ:icq

X-WAB-GENDER:2

 

 

最后再补一个详细的vCard例子如下:

BEGIN:VCARD

VERSION:2.1

N:Doe;John;;;

FN:John Doe

ORG:Doe Company, The;

TITLE:President

NOTE;ENCODING=QUOTED-PRINTABLE:This is a note associated with this

contact=0D=0A

TEL;WORK;VOICE:(987) 123-4567

TEL;HOME;VOICE:(987) 765-4321

TEL;CELL;VOICE:(987) 135-8642

TEL;WORK;FAX:(987) 246-1357

ADR;WORK:;;1234 North Street;Anytown;TX 751234;;United States of America

LABEL;WORK;ENCODING=QUOTED-PRINTABLE:1234 North Street=0D=0AAnytown, TX

751234 =0D=0AUnited States of America

URL:

URL:<WWLINK TYPE="GENERIC"

VALUE="http://www.doeweb.com">http://www.doeweb.com</WWLINK>

EMAIL;PREF;INTERNET:jdoe@nowhere.com

REV:19980114T170559Z

END:VCARD

另外rfc2426vcard-21datasheet在附件中

http://www.cppblog.com/Files/franksunny/rfc2426.rar

http://www.cppblog.com/Files/franksunny/vcard-21.rar

 

 

 

posted on 2008-09-13 07:20 frank.sunny 阅读(3612) 评论(0)  编辑 收藏 引用 所属分类: symbian 开发

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理



常用链接

留言簿(13)

随笔分类

个人其它博客

基础知识链接

最新评论

阅读排行榜

评论排行榜