vCard学习笔记

江枫思渺然 提交于 2020-01-01 02:08:17

vCard学习笔记

 

转载时请注明出处:http://blog.csdn.net/absurd/

 

vCard?看起来像个专业术语,一下让人敬畏三分。当然这全仰仗着第一个字母v了,如果把v去掉,剩下的Card就是名片的意思,简单得不能再简单了。事实上vCard就是一个描述名片的规范。为什么前面加个v呢,据说这个规范最初是由Versit联盟提出的,至于为什么v是小写的,据说是出于技术限制(technical restrictions),不懂不懂,也懒得管它了。

 

奇怪!名片也要规范吗?对大多数人来说,名片就是姓名+电话号码,有必要定一个规范吗?当然有必要,任何用于交换的数据都需要定规范,否则大家划不是一套拳,就没有办法交换了。比如一张名片的信息本来为:姓名:张三,手机:13012345678。在不同的软件中,表现方式可能千差万别,有的表示为: 张三, 13012345678。有的表示为: name=张三,mobile=13012345678总之,种种千奇百怪的写法都有。

 

有了vCard这个规范,大家都按统一的格式描述名片(至少在交换时)。你可以把outlook或者foxmail中的名片,上传放到手机中,手机可以是nokia的,也可以是moto的,或者其它任何支持vCard的手机,这都没有任何关系,大家说的是同一语言,交流时就没有障碍了。当然也可以在手机之间传递名片,对方手机可以直接把发过来的名片保存到电话本中。

 

废话少说,还是先看看vCard长什么样吧:

 BEGIN:vCard

   VERSION:3.0

   FN:Frank Dawson

   ORG:Lotus Development Corporation

   ADR;TYPE=WORK,POSTAL,PARCEL:;;6544 Battleford Drive

    ;Raleigh;NC;27613-3502;U.S.A.

   TEL;TYPE=VOICE,MSG,WORK:+1-919-676-9515

   TEL;TYPE=FAX,WORK:+1-919-676-9564

   EMAIL;TYPE=INTERNET,PREF:Frank_Dawson@Lotus.com

   EMAIL;TYPE=INTERNET:fdawson@earthlink.net

   URL:http://home.earthlink.net/~fdawson

   END:vCard

 

在上例中:

BEGIN:vCard 表示接下来的内容是一个vCard

VERSION:3.0 表示vCard的版本号,不同的版本会有差异。

FN:Frank Dawson 表示姓名。

ORG:Lotus Development Corporation 表示公司名。

ADR;TYPE=WORK,POSTAL,PARCEL:;;6544 Battleford Drive

;Raleigh;NC;27613-3502;U.S.A. 表示地址。TYPE=WORK,POSTAL,PARCEL表示地址类别为:工作地址、信件投递地址和包裹投递地址。

TEL;TYPE=VOICE,MSG,WORK:+1-919-676-9515 表示电话。TYPE=VOICE,MSG,WORK表示电话类别为: 语音电话、信息电话和工作电话。

TEL;TYPE=FAX,WORK:+1-919-676-9564 表示电话。TYPE=FAX,WORK表示电话类别为:传真和工作电话。

EMAIL;TYPE=INTERNET,PREF:Frank_Dawson@Lotus.com 表示EMAL地址。类型为INTERNET,并且为首选EMAL地址。

EMAIL;TYPE=INTERNET:fdawson@earthlink.net表示EMAL地址。类型为INTERNET

URL:http://home.earthlink.net/~fdawson 表示主页。

END:vCard 表示vCard结束。

 

Rfc2426描述了vCard的中规范,里面定义一些常用的信息,如: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

 

也规定了诸如语言和编码要求。比如在下面的例子中,相片采用了base64编码,PHOTO;ENCODING=b;TYPE=JPEG:MIICajCCAdOgAwIBAgICBEUwDQYJKoZIhvcNAQEEBQAwdzELMAkGA1UEBhMCVVMxLDAqBgNVBAoTI05ldHNjYXBlIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uMRwwGgYDVQQLExNJbmZvcm1hdGlvbiBTeXN0

 

尽管在rfc2426描述的信息,对于普通名片来说已经足够了。但是特殊情况下,需要一些扩展信息,为此,rfc2426也提供一种扩展机制,扩展的信息以X-打头。在交换时,若对方不支持这个扩展,它可以安全的忽略它。

 

GPE项目中,有一个库libmimedir,提供了解析vCard的功能。

 

W3为了满足一些新需要,定义了另一套规范(http://www.w3.org/TR/vcard-rdf),它用RDF(Resource Description Framework)来描述vCard,表示的内容一样,只是用XML来的描述的。如:

<?xml version="1.0"?>

  <rdf:RDF xmlns:rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"

           xmlns:vCard = "http://www.w3.org/2001/vcard-rdf/3.0#">

 

    <rdf:Description rdf:about = "http://qqqfoo.com/staff/corky" >

      <vCard:FN> Corky Crystal </vCard:FN>

      <vCard:N rdf:parseType="Resource">

        <vCard:Family> Crystal </vCard:Family>

        <vCard:Given>  Corky </vCard:Given>

        <vCard:Other>  Jacky </vCard:Other>

        <vCard:Prefix> Dr </vCard:Prefix>

      </vCard:N>

      <vCard:BDAY> 1980-01-01 </vCard:BDAY>

      <vCard:TITLE> Computer Officer Class 3 </vCard:TITLE>

      <vCard:ROLE> Programmer </vCard:ROLE>

      <vCard:TEL rdf:parseType="Resource">

        <rdf:value> +61 7 555 5555 </rdf:value>

        <rdf:type rdf:resource="http://www.w3.org/2001/vcard-rdf/3.0#work"/>

        <rdf:type rdf:resource="http://www.w3.org/2001/vcard-rdf/3.0#voice"/>

      </vCard:TEL>

      <vCard:EMAIL rdf:parseType="Resource">

        <rdf:value> corky@qqqfoo.com </rdf:value>

        <rdf:type rdf:resource="http://www.w3.org/2001/vcard-rdf/3.0#internet"/>

      </vCard:EMAIL>

      <vCard:ADR rdf:parseType="Resource">

        <vCard:Street>   111 Lake Drive </vCard:Street>

        <vCard:Locality> WonderCity </vCard:Locality>

        <vCard:Pcode>    5555 </vCard:Pcode>

        <vCard:Country>  Australia </vCard:Country>

      </vCard:ADR>

    </rdf:Description>

  </rdf:RDF>

 

~~end~~

 

 

 
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!