zoukankan      html  css  js  c++  java
  • VCF文件导入导出

    参考资料

    通讯录导入导出vcf格式文件方法可参考:

    https://qiaodahai.com/android-iphone-mobile-phones-contacts-import-and-export.html
    vCard维基百科:
    https://en.wikipedia.org/wiki/VCard
    vCard Format Specification:
    https://www.rfc-editor.org/rfc/pdfrfc/rfc6350.txt.pdf

    手动导出实例

    Android(Android6)系统自带的联系人导出00001.vcf文件实例:

    BEGIN:VCARD
    VERSION:2.1
    N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;=E5=BC=A0=E4=B8=89;;;
    FN;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=E5=BC=A0=E4=B8=89
    TEL;CELL:15888888888
    TEL;CELL:15688888888
    EMAIL;HOME:zhangsan@qq.com
    END:VCARD
    BEGIN:VCARD
    VERSION:2.1
    N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;=E6=9D=8E=E5=9B=9B;;;
    FN;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=E6=9D=8E=E5=9B=9B
    TEL;CELL:16666666666
    EMAIL;HOME:lisi@gmail.com
    END:VCARD

    苹果iCloud官网导出的iCloud vCard.vcf文件实例:

    BEGIN:VCARD
    VERSION:3.0
    PRODID:-//Apple Inc.//iOS 10.1.1//EN
    N:丁;小丽;;;
    FN:丁小丽
    TEL;type=CELL;type=VOICE;type=pref:15811111111
    REV:2018-02-21T05:34:09Z
    END:VCARD
    BEGIN:VCARD
    VERSION:3.0
    PRODID:-//Apple Inc.//iOS 10.1.1//EN
    N:;;;;
    FN:钉钉专属顾问
    ORG:钉钉专属顾问;
    item1.TEL;type=pref:057156215888
    item1.X-ABLabel:钉钉智能办公电话
    REV:2018-02-21T23:01:24Z
    END:VCARD

    vCard介绍

    vCard:又被称为:VCF(Virtual Contact File),是一种电子名片的文件格式标准。vCard可以包含名字,地址,电话,e-mail地址,照片等。

    vCard格式规约

    Charset : 只能是 UTF-8。
    每行长度不超过75字节(不包括换行符),逻辑上长度超过75字节,需要用回车换行符进行对内容进行物理上的折叠。换行后至少空一格,也可以空两格,或空一个tab。如果只空了一格,在展开这行的时候,这个空格要被省去(即去掉<CRLF>和单个空格,对于[RFC5322]有点不同,展开的时候是去掉<CRLF><WSP> )。

    vCard定义范式

    vcard-entity = 1*vcard
    vcard = "BEGIN:VCARD" CRLF
    "VERSION:4.0" CRLF
    1*contentline
    "END:VCARD" CRLF
    ; A vCard object MUST include the VERSION and FN properties.
    ; VERSION MUST come immediately after BEGIN:VCARD.

    contentline = [group "."] name *(";" param) ":" value CRLF

    group = 1*(ALPHA / DIGIT / "-")

    name = "SOURCE" / "KIND" / "FN" / "N" / "NICKNAME"
    / "PHOTO" / "BDAY" / "ANNIVERSARY" / "GENDER" / "ADR" / "TEL"
    / "EMAIL" / "IMPP" / "LANG" / "TZ" / "GEO" / "TITLE" / "ROLE"
    / "LOGO" / "ORG" / "MEMBER" / "RELATED" / "CATEGORIES"
    / "NOTE" / "PRODID" / "REV" / "SOUND" / "UID" / "CLIENTPIDMAP"
    / "URL" / "KEY" / "FBURL" / "CALADRURI" / "CALURI" / "XML"
    / iana-token / x-name
    ; Parsing of the param and value is based on the "name" as
    ; defined in ABNF sections below.
    ; Group and name 大小写不敏感.

    iana-token = 1*(ALPHA / DIGIT / "-")
    ; identifier registered with IANA

    x-name = "x-" 1*(ALPHA / DIGIT / "-")
    ; Names that begin with "x-" or "X-" are
    ; reserved for experimental use, not intended for released
    ; products, or for use in bilateral agreements.

    param = language-param / value-param / pref-param / pid-param
    / type-param / geo-parameter / tz-parameter / sort-as-param
    / calscale-param / any-param
    ; Allowed parameters depend on property name.

    param-value = *SAFE-CHAR / DQUOTE *QSAFE-CHAR DQUOTE

    any-param = (iana-token / x-name) "=" param-value *("," param-value)

    NON-ASCII = UTF8-2 / UTF8-3 / UTF8-4
    ; UTF8-{2,3,4} are defined in [RFC3629]

    QSAFE-CHAR = WSP / "!" / %x23-7E / NON-ASCII
    ; Any character except CTLs, DQUOTE

    SAFE-CHAR = WSP / "!" / %x23-39 / %x3C-7E / NON-ASCII
    ; Any character except CTLs, DQUOTE, ";", ":"

    VALUE-CHAR = WSP / VCHAR / NON-ASCII
    ; Any textual character

    vCard定义范式说明

    Property names and parameter names 大小写不敏感,Parameter values没有显示声明成case-sensitive的大小写不敏感. 为了与vCard 3兼容, 建议property andparameter names用大写。

    group仅仅是为了将相近的属性归为一类。

    范式中的基数说明:
    +-------------+--------------------------------------------------+
    | Cardinality | Meaning |
    +-------------+--------------------------------------------------+
    | 1 | Exactly one instance per vCard MUST be present. |
    | *1 | Exactly one instance per vCard MAY be present. |
    | 1* | One or more instances per vCard MUST be present. |
    | * | One or more instances per vCard MAY be present. |
    +-------------+--------------------------------------------------+


    属性可能会有多个值,一般来说当出现多个值的情况时,编码规则是新建一个内容行,重复属性名和值。如:
    TEL;CELL:18722222222
    TEL;CELL:15622222222
    但是有些值类型支持用逗号作分隔,比如(date, time, integer, float)

    逗号分隔值,分号分隔属性,不是作为分隔符时,需要在前面加反斜杠转义。反斜杠不做为转义符时,前面需要添加反斜杠转义。换行符需要转义: 或者 N

    属性值类型:
    value = text
    / text-list
    / date-list
    / time-list
    / date-time-list
    / date-and-or-time-list
    / timestamp-list
    / boolean
    / integer-list
    / float-list
    / URI ; from Section 3 of [RFC3986]
    / utc-offset
    / Language-Tag
    / iana-valuespec
    ; Actual value type depends on property name and VALUE parameter.

    text = *TEXT-CHAR

    TEXT-CHAR = "\" / "\," / " " / WSP / NON-ASCII
    / %x21-2B / %x2D-5B / %x5D-7E
    ; Backslashes, commas, and newlines must be encoded.

    component = "\" / "\," / ";" / " " / WSP / NON-ASCII
    / %x21-2B / %x2D-3A / %x3C-5B / %x5D-7E

    list-component = component *("," component)

    text-list = text *("," text)
    date-list = date *("," date)
    time-list = time *("," time)
    date-time-list = date-time *("," date-time)
    date-and-or-time-list = date-and-or-time *("," date-and-or-time)
    timestamp-list = timestamp *("," timestamp)
    integer-list = integer *("," integer)
    float-list = float *("," float)
    boolean = "TRUE" / "FALSE"
    integer = [sign] 1*DIGIT
    float = [sign] 1*DIGIT ["." 1*DIGIT]
    sign = "+" / "-"
    year = 4DIGIT ; 0000-9999
    month = 2DIGIT ; 01-12
    day = 2DIGIT ; 01-28/29/30/31 depending on month and leap year
    hour = 2DIGIT ; 00-23
    minute = 2DIGIT ; 00-59
    second = 2DIGIT ; 00-58/59/60 depending on leap second
    zone = utc-designator / utc-offset
    utc-designator = %x5A ; uppercase "Z"
    date = year [month day]
    / year "-" month
    / "--" month [day]
    / "--" "-" day
    date-noreduc = year month day
    / "--" month day
    / "--" "-" day
    date-complete = year month day
    time = hour [minute [second]] [zone]
    / "-" minute [second] [zone]
    / "-" "-" second [zone]
    time-notrunc = hour [minute [second]] [zone]
    time-complete = hour minute second [zone]

    属性可以有多个attribute与之关联,也就是propertyparameters。parameter有多个值时,用逗号分隔。parameter值里有冒号,分号,逗号的需要被引号引起来。

    VALUE是可选的parameter,用来指示值的类型和格式。推荐使用。
    VALUE范式:
    value-param = "VALUE=" value-type
    value-type = "text"
    / "uri"
    / "date"
    / "time"
    / "date-time"
    / "date-and-or-time"
    / "timestamp"
    / "boolean"
    / "integer"
    / "float"
    / "utc-offset"
    / "language-tag"
    / iana-token ; registered as described in section 12
    / x-name

    PREF代表优先级,必须为1到100间的整数,1优先级最高。

    vCard 属性分类

    (截取自RFC第六章目录,可以通过后面对应页码查看详情)

    6.1. General Properties通用属性
    6.1.1. BEGIN . . . . . . . . .开始标志,必须有. . . . . . . . . . . . . .  23
    6.1.2. END . . . . . . . . . .结束标志,必须有. . . . . . . . . . . . . . . 23
    6.1.3. SOURCE . . . . . . . . .资料来源url,可以从这获取vCard对象的最新状态. . . . . . . . . . . . . 24
    6.1.4. KIND . . . . . . . . . .vCard类型('individual, 'group', 'location' or 'organization'). . . . . . . .25
    6.1.5. XML . . . . . . . . . .跟该vCard对象相关的XML编码的数据 . . . . . . . . . . . . . . . 27
    6.2. Identification Properties身份标识属性
    6.2.1. FN . . . . . . . . . . .名字. . . . . . . . . . . . . . . 28
    6.2.2. N . . . . . . . . . . .人名,职位及其他与该vCard对象关联的一种结构化的表示,如N:Doe;John;;Dr;. . . . . . . . . . . . . . . 29
    6.2.3. NICKNAME . . . . . . . .昵称(多个间用逗号分隔). . . . . . . . . . . . . . . 29
    6.2.4. PHOTO . . . . . . . . .照片(*). . . . . . . . . . . . . . . 30
    6.2.5. BDAY . . . . . . . . . .出生日期(*1) . . . . . . . . . . . . . . . 30
    6.2.6. ANNIVERSARY . . . . . .周年纪念日 (*1). . . . . . . . . . . . . . . 31
    6.2.7. GENDER . . . . . . . . .性别(*1)M代表male,F代表female,O代表other,N代表none或者不适用的,U代表未知 . . . . . 32
    6.3. Delivery Addressing Properties地址
    6.3.1. ADR . . . . . . . . . .地址,由多个属性(街道,区域,国家等)构成,属性间分号分隔,属性值没有时,分号需要保留 . . . .32
    6.4. Communications Properties通信属性
    6.4.1. TEL . . . . . . . . . .电话 . . . . . . . . . . . . . . . 34
    6.4.2. EMAIL . . . . . . . . .邮箱 . . . . . . . . . . . . . . . 36
    6.4.3. IMPP . . . . . . . . . .即时通信uri (*)(示例:IMPP;PREF=1:xmpp:alice@example.com). . . . . . . . . . . . . . . 36
    6.4.4. LANG . . . . . . . . . .vCard对象使用的语言(*) . . . . . . . . . . . . . . . 37
    6.5. Geographical Properties地理属性
    6.5.1. TZ . . . . . . . . . . .时区(不建议使用utc-offset) . . . . . . . . . . . . . . . 37
    6.5.2. GEO . . . . . . . . . .经纬度 . . . . . . . . . . . . . . . 38
    6.6. Organizational Properties组织属性
    6.6.1. TITLE . . . . . . . . .职位头衔 . . . . . . . . . . . . . . . 39
    6.6.2. ROLE . . . . . . . . . .担任角色 . . . . . . . . . . . . . . . 39
    6.6.3. LOGO . . . . . . . . . .logoURI . . . . . . . . . . . . . . . 40
    6.6.4. ORG . . . . . . . . . .组织名 . . . . . . . . . . . . . . . 40
    6.6.5. MEMBER . . . . . . . . .成员,vCardd类型为"group"时才能使用该属性. . . . . . . . . . . . . . . . 41
    6.6.6. RELATED . . . . . . . .vCard对象拥有的关系(同事,配偶等) . . . . . . . . . . . . . . . 42
    6.7. Explanatory Properties解释性属性
    6.7.1. CATEGORIES . . . . . . .所属分类,标签(例如CATEGORIES:INTERNET,IETF,INDUSTRY,INFORMATION TECHNOLOGY) . .43
    6.7.2. NOTE . . . . . . . . . .补充说明信息 . . . . . . . . . . . . . . . 44
    6.7.3. PRODID . . . . . . . . .product ID(生产商信息) . . . . . . . . . . . . . . . 44
    6.7.4. REV . . . . . . . . . .修订版本号 . . . . . . . . . . . . . . . 45
    6.7.5. SOUND . . . . . . . . .(URI)用来表现该vCard对象特定方面特征的声音,常用于存vCard名字的发音 . .  45
    6.7.6. UID . . . . . . . . . .全局唯一标识(如UID:urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6) . . 46
    6.7.7. CLIENTPIDMAP . . . . . .用来给局部资源标识PID一个全局的意义 . . . . . . . . . . . . . . . 47
    6.7.8. URL . . . . . . . . . .跟该vCard对象相关的URL地址(博客地址,个人网站地址等) . . . . . . 47
    6.7.9. VERSION . . . . . . . .vCard格式版本 . . . . . . . . . . . . . . . 48
    6.8. Security Properties安全属性
    6.8.1. KEY . . . . . . . . . .(URI)公钥或者认证证书 . . . . . . . . . . . . . . . 48
    6.9. Calendar Properties日程表属性
    6.9.1. FBURL . . . . . . . . .(URL)标注忙碌(或者空闲)时间表 . . . . . . . . . . . . . . . 49
    6.9.2. CALADRURI . . . . . . .日程表可发送地址 . . . . . . . . . . . . . . . 50
    6.9.3. CALURI . . . . . . . . .(URI)日程表 . . . . . . . . . . . . . . . 50
    6.10. Extended Properties and Parameters扩展属性和参数( "X-"开头的非标准的私有的属性)

    属性说明

    对于扩展属性,RFC6350是这样说的“Extended Properties and Parameters The properties and parameters defined by this document can be extended. Non-standard, private properties and parameters with a name starting with "X-" may be defined bilaterally between two cooperating agents without outside registration or standardization.”,可以通过定义名称以 "X-"为前缀的属性和参数来扩展上面未定义的。使用和解析的时候达成一致就好。

    对于上面定义了的属性,标注为蓝色部分的为和RFC2426兼容部分,其他为新增部分,具体版本的属性差异可以参考vCard维基百科给出的properties对比:

    vCard defines the following property types.

    All vCards begin with BEGIN:VCARD and end with END:VCARD. All vCards must contain the VERSION property, which specifies the vCard version. VERSIONmust come immediately after BEGIN, except in the vCard 2.1 standard, which allows it to be anywhere in the vCard. Otherwise, properties can be defined in any order.

    R = requiredS = supportedSP = special, supportedNS = no longer supported as a property but can be used as a parameter inside another property

    NameVersionsDescriptionExample
    2.13.04.0
    XML     S Any XML data that is attached to the vCard. This is used if the vCard was encoded in XML (xCard standard) and the XML document contained elements which are not part of the xCard standard. XML:<b>Not an xCard XML element</b>
    VERSION R R R The version of the vCard specification. In versions 3.0 and 4.0, this must come right after the BEGIN property. VERSION:3.0
    URL S S S A URL pointing to a website that represents the person in some way. URL:http://www.johndoe.com
    UID S S S Specifies a value that represents a persistent, globally unique identifier associated with the object. UID:urn:uuid:da418720-3754-4631-a169-db89a02b831b
    TZ S S S The time zone of the vCard object. 2.13.0TZ:-0500
    4.0TZ:America/New_York
    TITLE S S S Specifies the job title, functional position or function of the individual associated with the vCard object within an organization. TITLE:V.P. Research and Development
    TEL S S S The canonical number string for a telephone number for telephony communication with the vCard object. TEL;TYPE=cell:(123) 555-5832
    SOURCE S S S A URL that can be used to get the latest version of this vCard. SOURCE:http://johndoe.com/vcard.vcf
    SOUND S S S By default, if this property is not grouped with other properties it specifies the pronunciation of the FN property of the vCard object. It may point to an external URL or may be embedded in the vCard as a Base64 encoded block of text. 2.1SOUND;OGG:http://example.com/sound.ogg
    2.1SOUND;OGG;ENCODING=BASE64:[base64-data]
    3.0SOUND;TYPE=OGG:http://example.com/sound.ogg
    3.0SOUND;TYPE=OGG;ENCODING=b:[base64-data]
    4.0SOUND;MEDIATYPE=audio/ogg:http://example.com/sound.ogg
    4.0SOUND:data:audio/ogg;base64,[base64-data]
    SORT-STRING S S NS* Defines a string that should be used when an application sorts this vCard in some way.

    * Not supported in version 4.0. Instead, this information is stored in the SORT-AS parameter of the N and/or ORG properties.
    SORT-STRING:Doe
    ROLE S S S The role, occupation, or business category of the vCard object within an organization. ROLE:Executive
    REV S S S A timestamp for the last time the vCard was updated. REV:20121201T134211Z
    RELATED     S Another entity that the person is related to. Acceptable values include:
    • a "mailto:" URL containing an email address
    • a UID which references the person's own vCard
    RELATED;TYPE=friend:urn:uuid:03a0e51f-d1aa-4385-8a53-e29025acd8af
    PROFILE S S   States that the vCard is a vCard. PROFILE:VCARD
    PRODID   S S The identifier for the product that created the vCard object. PRODID:-//ONLINE DIRECTORY//NONSGML Version 1//EN
    PHOTO S S S An image or photograph of the individual associated with the vCard. It may point to an external URL or may be embedded in the vCard as a Base64 encoded block of text. 2.1PHOTO;JPEG:http://example.com/photo.jpg
    2.1PHOTO;JPEG;ENCODING=BASE64:[base64-data]
    3.0PHOTO;TYPE=JPEG;VALUE=URI:http://example.com/photo.jpg
    3.0PHOTO;TYPE=JPEG;ENCODING=b:[base64-data]
    4.0PHOTO;MEDIATYPE=image/jpeg:http://example.com/photo.jpg
    4.0PHOTO:data:image/jpeg;base64,[base64-data]
    ORG S S S The name and optionally the unit(s) of the organization associated with the vCard object. This property is based on the X.520 Organization Name attribute and the X.520 Organization Unit attribute. ORG:Google;GMail Team;Spam Detection Squad
    NOTE S S S Specifies supplemental information or a comment that is associated with the vCard. NOTE:I am proficient in Tiger-Crane Style, and I am more than proficient in the exquisite art of the Samurai sword.
    NICKNAME   S S One or more descriptive/familiar names for the object represented by this vCard. NICKNAME:Jon,Johnny
    NAME   S   Provides a textual representation of the SOURCE property.  
    N R R S A structured representation of the name of the person, place or thing associated with the vCard object. N:Doe;John;;Dr;
    MEMBER     S Defines a member that is part of the group that this vCard represents. Acceptable values include:
    • a "mailto:" URL containing an email address
    • a UID which references the member's own vCard
    The KIND property must be set to "group" in order to use this property.
    MEMBER:urn:uuid:03a0e51f-d1aa-4385-8a53-e29025acd8af
    MAILER S S   Type of email program used. MAILER:Thunderbird
    LOGO S S S An image or graphic of the logo of the organization that is associated with the individual to which the vCard belongs. It may point to an external URL or may be embedded in the vCard as a Base64 encoded block of text. 2.1LOGO;PNG:http://example.com/logo.png
    2.1LOGO;PNG;ENCODING=BASE64:[base64-data]
    3.0LOGO;TYPE=PNG:http://example.com/logo.png
    3.0LOGO;TYPE=PNG;ENCODING=b:[base64-data]
    4.0LOGO;MEDIATYPE=image/png:http://example.com/logo.png
    4.0LOGO:data:image/png;base64,[base64-data]
    LANG     S Defines a language that the person speaks. LANG:fr-CA
    LABEL S S NS* Represents the actual text that should be put on the mailing label when delivering a physical package to the person/object associated with the vCard (related to the ADR property).

    * Not supported in version 4.0. Instead, this information is stored in the LABEL parameter of the ADR property. Example: ADR;TYPE=home;LABEL="123 Main St New York, NY 12345":;;123 Main St;New York;NY;12345;USA
    LABEL;TYPE=HOME:123 Main St. Springfield, IL 12345 USA
    KIND     S Defines the type of entity that this vCard represents: 'application', 'individual, 'group', 'location' or 'organization'; 'x-*' values may be used for experimental purposes.[4][5] KIND:individual
    KEY S S S The public encryption key associated with the vCard object. It may point to an external URL, may be plain text, or may be embedded in the vCard as a Base64 encoded block of text. 2.1KEY;PGP:http://example.com/key.pgp
    2.1KEY;PGP;ENCODING=BASE64:[base64-data]
    3.0KEY;TYPE=PGP:http://example.com/key.pgp
    3.0KEY;TYPE=PGP;ENCODING=b:[base64-data]
    4.0KEY;MEDIATYPE=application/pgp-keys:http://example.com/key.pgp
    4.0KEY:data:application/pgp-keys;base64,[base64-data]
    IMPP   SP* S Defines an instant messenger handle.

    * This property was introduced in a separate RFC when the latest vCard version was 3.0. Therefore, 3.0 vCards may use this property, even though it's not part of the 3.0 specifications.
    IMPP:aim:johndoe@aol.com
    GEO S S S Specifies a latitude and longitude. 2.13.0GEO:39.95;-75.1667
    4.0GEO:geo:39.95,-75.1667
    GENDER     S Defines the person's gender. GENDER:F
    FN S R R The formatted name string associated with the vCard object. FN:Dr. John Doe
    FBURL     S Defines a URL that shows when the person is "free" or "busy" on their calendar. FBURL:http://example.com/fb/jdoe
    END R R R All vCards must end with this property. END:VCARD
    EMAIL S S S The address for electronic mail communication with the vCard object. EMAIL:johndoe@hotmail.com
    CLIENTPIDMAP     S Used for synchronizing different revisions of the same vCard. CLIENTPIDMAP:1;urn:uuid:3df403f4-5924-4bb7-b077-3c711d9eb34b
    CLASS   S   Describes the sensitivity of the information in the vCard. CLASS:public
    CATEGORIES S S S A list of "tags" that can be used to describe the object represented by this vCard. CATEGORIES:swimmer,biker
    CALURI     S A URL to the person's calendar. CALURI:http://example.com/calendar/jdoe
    CALADRURI     S A URL to use for sending a scheduling request to the person's calendar. CALADRURI:http://example.com/calendar/jdoe
    BEGIN R R R All vCards must start with this property. BEGIN:VCARD
    BDAY S S S Date of birth of the individual associated with the vCard. BDAY:19700310
    ANNIVERSARY     S Defines the person's anniversary. ANNIVERSARY:19901021
    AGENT S S   Information about another person who will act on behalf of the vCard object. Typically this would be an area administrator, assistant, or secretary for the individual. Can be either a URL or an embedded vCard. AGENT:http://mi6.gov.uk/007
    ADR S S S A structured representation of the physical delivery address for the vCard object. ADR;TYPE=home:;;123 Main St.;Springfield;IL;12345;USA

    A handful of separate specifications define additional vCard properties.

    NameSpecificationDescriptionExample
    BIRTHPLACE RFC 6474 The location of the individual's birth. BIRTHPLACE;VALUE=text:Maida Vale\, London\, England
    DEATHDATE RFC 6474 The individual's time of death. DEATHDATE:19540607
    DEATHPLACE RFC 6474 The location of the individual death. DEATHPLACE;VALUE=uri:geo:53.328,-2.229409
    EXPERTISE RFC 6715 A professional subject area that the person has knowledge of. EXPERTISE;LEVEL=expert:Computer Science
    HOBBY RFC 6715 A recreational activity that the person actively engages in. HOBBY;LEVEL=high:knitting
    IMPP RFC 4770 Defines an instant messenger handle. This was added to the official vCard specification in version 4.0. IMPP:aim:johndoe@aol.com
    INTEREST RFC 6715 A recreational activity that the person is interested in, but does not necessarily take part in. INTEREST;LEVEL=high:baseball
    ORG-DIRECTORY RFC 6715 A URI representing the person's work place, which can be used to look up information on the person's co-workers. ORG-DIRECTORY:http://www.company.com/employees

    vCard extensions

    vCard supports private extensions, with an "X-" prefix, a number of which are in common usage.[citation needed]

    Some of these include:

    ExtensionUsed AsDataSemantic
    Extensions supported by several different programs.
    X-ABUID property string Apple Address Book UUID for that entry
    X-ANNIVERSARY property YYYY-MM-DD arbitrary anniversary (in addition to BDAY, birthday)
    X-ASSISTANT property string assistant name (instead of AGENT)
    X-MANAGER property string manager name
    X-SPOUSE property string spouse name
    X-GENDER property string value Male or Female
    X-WAB-GENDER property 1/2 value 1 for female or 2 for male
    X-AIM property string Instant Messaging (IM) contact information; TYPE parameter as for TEL
    X-ICQ property string
    X-GOOGLE-TALKX-GTALK property string
    X-JABBER property string
    X-MSN property string
    X-YAHOO property string
    X-TWITTER property string
    X-SKYPEX-SKYPE-USERNAME property string
    X-GADUGADU property string
    X-GROUPWISE property string  
    X-MS-IMADDRESS property string IM address in VCF attachment from Outlook (right click Contact, Send Full Contact, Internet Format.)
    X-MS-CARDPICTURE property string Works as PHOTO or LOGO. Contains an image of the Card in Outlook.
    X-MS-OL-DESIGN property string Contains XML used by Outlook describing the layout of the information presented as a business card.[6]
    X-PHONETIC-FIRST-NAMEX-PHONETIC-LAST-NAME property string alternative spellings, for assisting with the pronunciation of unfamiliar names
    Introduced and used by Mozilla; used by Evolution (software)
    X-MOZILLA-HTML property TRUE/FALSE mail recipient prefers HTML-formatted email
    X-MOZILLA-PROPERTY property string Thunderbird specific settings
    Introduced and used by Evolution (software)
    X-EVOLUTION-ANNIVERSARY property YYYY-MM-DD arbitrary anniversary (in addition to BDAY, birthday)
    X-EVOLUTION-ASSISTANT property string assistant name (instead of Agent)
    X-EVOLUTION-BLOG-URL property string/URL blog URL
    X-EVOLUTION-FILE-AS property string file under different name (in addition to N, name components; and FN, full name)
    X-EVOLUTION-LIST property TRUE/FALSE entry defines a mailing list (e.g. X-EVOLUTION-LIST:TRUE)
    X-EVOLUTION-LIST-SHOW_ADDRESSES property TRUE/FALSE sets whether individual addresses will appear in e-mails sent using a mailing list (e.g. X-EVOLUTION-LIST-SHOW_ADDRESSES:FALSE)
    X-EVOLUTION-MANAGER property string manager name
    X-EVOLUTION-SPOUSE property string spouse name
    X-EVOLUTION-VIDEO-URL property string/URL video chat address
    X-EVOLUTION-CALLBACK TEL TYPEparameter value - callback phone number
    X-EVOLUTION-RADIO TEL TYPEparameter value - radio contact information
    X-EVOLUTION-TELEX TEL TYPEparameter value - Telex contact information
    X-EVOLUTION-TTYTDD TEL TYPEparameter value - TTY TDD contact information
    Introduced and used by Kontact and KAddressBook
    X-KADDRESSBOOK-BlogFeed property string/URL blog URL
    X-KADDRESSBOOK-X-Anniversary property ISO date arbitrary anniversary, in addition to BDAY = birthday
    X-KADDRESSBOOK-X-AssistantsName property string assistant name (instead of Agent)
    X-KADDRESSBOOK-X-IMAddress property string im address
    X-KADDRESSBOOK-X-ManagersName property string manager name
    X-KADDRESSBOOK-X-Office property string office description
    X-KADDRESSBOOK-X-Profession property string profession
    X-KADDRESSBOOK-X-SpouseName property string spouse name
    X-KADDRESSBOOK-OPENPGPFP property string OpenPGG fingerprint (RFC 6350 standardised KEY as a replacement for this)
    Introduced and used by WebMoney
    X-WEBMONEY-ID property long Unique 12-Digit number, which is the address of a member within the WebMoneysystem

    可行的开源解析工具(基于RFC2426做的实现)

    https://github.com/george-haddad/cardme

    这个开源工具抽象了一个vCard接口,通过这个接口可以获取和设置RFC2426里规定的不同的Type(对应RFC6350里的Property,也就是vCard里的TEL电话等属性,RFC2426和RFC6350差异可以参看https://tools.ietf.org/html/rfc6350#appendix-A和上面的属性对比表格)。

    项目中与之相关需求实现思考

    因为上面给出的开源工具就RFC2426给出了实现,而RFC2426和RFC6350重合的属性很多,这些重合属性也覆盖了现实生活中通讯录需要使用到的大部分常用属性。所以,建议数据库里存取的时候,字段与这些重合属性对应。在使用该工具解析完了后,再使用我们自己写的DAO来存到对应数据库表字段里。另外剩下的一些有差异的属性,可以视情况不用或者直接去掉。根据项目客户需要,还可以加上必要的其他属性,这些属性以“X-”开头的扩展属性形式存在,在开源工具基础上,新增扩展属性对应的解析方法,数据库表字段里,同样新增对应的扩展字段。

  • 相关阅读:
    CentOS 出错处理
    g13 root
    修复误删系统文件
    c++ list sort方法
    批量修改outlook联系人头像,并同步手机
    IT大牛们 学术搜索
    oracle 表空间操作
    CentOS 5.5 安装MPICH2\MRNet\Launchmon时遇到的问题
    自我反省
    积累航程
  • 原文地址:https://www.cnblogs.com/goingforward/p/8665333.html
Copyright © 2011-2022 走看看