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 或者 \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 = "\\" / "\," / "\n" / WSP / NON-ASCII
/ %x21-2B / %x2D-5B / %x5D-7E
; Backslashes, commas, and newlines must be encoded.
component = "\\" / "\," / "\;" / "\n" / 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. VERSION
must 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
Name | Versions | Description | Example | ||
---|---|---|---|---|---|
2.1 | 3.0 | 4.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.1, 3.0: TZ:-0500 4.0: TZ: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.1: SOUND;OGG:http://example.com/sound.ogg 2.1: SOUND;OGG;ENCODING=BASE64:[base64-data] 3.0: SOUND;TYPE=OGG:http://example.com/sound.ogg 3.0: SOUND;TYPE=OGG;ENCODING=b:[base64-data] 4.0: SOUND;MEDIATYPE=audio/ogg:http://example.com/sound.ogg 4.0: SOUND: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-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:
|
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.1: PHOTO;JPEG:http://example.com/photo.jpg 2.1: PHOTO;JPEG;ENCODING=BASE64:[base64-data] 3.0: PHOTO;TYPE=JPEG;VALUE=URI:http://example.com/photo.jpg 3.0: PHOTO;TYPE=JPEG;ENCODING=b:[base64-data] 4.0: PHOTO;MEDIATYPE=image/jpeg:http://example.com/photo.jpg 4.0: PHOTO: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,\nand 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:
The |
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.1: LOGO;PNG:http://example.com/logo.png 2.1: LOGO;PNG;ENCODING=BASE64:[base64-data] 3.0: LOGO;TYPE=PNG:http://example.com/logo.png 3.0: LOGO;TYPE=PNG;ENCODING=b:[base64-data] 4.0: LOGO;MEDIATYPE=image/png:http://example.com/logo.png 4.0: LOGO: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;TYPE=HOME:123 Main St.\nSpringfield, IL 12345\nUSA |
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.1: KEY;PGP:http://example.com/key.pgp 2.1: KEY;PGP;ENCODING=BASE64:[base64-data] 3.0: KEY;TYPE=PGP:http://example.com/key.pgp 3.0: KEY;TYPE=PGP;ENCODING=b:[base64-data] 4.0: KEY;MEDIATYPE=application/pgp-keys:http://example.com/key.pgp 4.0: KEY: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.1, 3.0: GEO:39.95;-75.1667 4.0: GEO: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.
Name | Specification | Description | Example |
---|---|---|---|
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:
Extension | Used As | Data | Semantic |
---|---|---|---|
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-TALK , X-GTALK |
property | string | |
X-JABBER |
property | string | |
X-MSN |
property | string | |
X-YAHOO |
property | string | |
X-TWITTER |
property | string | |
X-SKYPE , X-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-NAME , X-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 TYPE parameter value |
- | callback phone number |
X-EVOLUTION-RADIO |
TEL TYPE parameter value |
- | radio contact information |
X-EVOLUTION-TELEX |
TEL TYPE parameter value |
- | Telex contact information |
X-EVOLUTION-TTYTDD |
TEL TYPE parameter 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-”开头的扩展属性形式存在,在开源工具基础上,新增扩展属性对应的解析方法,数据库表字段里,同样新增对应的扩展字段。
VCF文件导入导出的更多相关文章
- NodeJs之EXCEL文件导入导出MongoDB数据库数据
NodeJs之EXCEL文件导入导出MongoDB数据库数据 一,介绍与需求 1.1,介绍 (1),node-xlsx : 基于Node.js解析excel文件数据及生成excel文件. (2),ex ...
- Laravel Excel 实现 Excel-CSV 文件导入导出功能
Laravel Excel 是一款基于 PHPExcel 开发的Laravel框架专用的 Excel/CSV 文件导入导出功能的扩展包,用起来的非常方便. 它的 Github 地址是:https:// ...
- 以太坊钱包开发系列2 - 账号Keystore文件导入导出
以太坊去中心化网页钱包开发系列,将从零开始开发出一个可以实际使用的钱包,本系列文章是理论与实战相结合,一共有四篇:创建钱包账号.账号Keystore文件导入导出.展示钱包信息及发起签名交易.发送Tok ...
- CSV文件导入导出MySQL
使用SQLyog 工具导入文件数据到MySQL: Excel文件导入导出: 需要驱动:Microsoft Office 2007驱动 导入需要注意的问题:1.Excel里数值列,默认导入会变成浮点型. ...
- Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
1.简介 本文主要给大家介绍了关于Laravel 5用Laravel Excel实现Excel/CSV文件导入导出的相关内容,下面话不多说了,来一起看看详细的介绍吧. Laravel Excel 在 ...
- 将csv格式的数据文件导入/导出数据库+添加新的字段
最近一直忙于实验室的事情,没有好好更新博客,在抓包的过程中,遇到了很多问题. 因为我常用Wireshark将抓包信息导出为csv文件,这里简单mark一下将csv文件导入/导出到数据库的2种方法: 一 ...
- 数据库MySQL基本介绍安装使用及文件导入导出
1.数据库(data base) 1.1 简述 把文件存储在一台电脑上(服务器),其他电脑用户可以通过账号密码登陆,通过网络去访问这台电脑上的文件,但是由于每个人的数据是不同的,所以你只能通过自己的账 ...
- Excel导入导出工具(简单、好用且轻量级的海量Excel文件导入导出解决方案.)
Excel导入导出工具(简单.好用且轻量级的海量Excel文件导入导出解决方案.) 置顶 2019-09-07 16:47:10 $9420 阅读数 261更多 分类专栏: java 版权声明:本 ...
- 按照TYPE的文件导入导出功能
/** * 导入文件Action;*/private File excelFile;// 保存原始文件名private String excelFileFileName;// 保存原始文件名priva ...
随机推荐
- Spring中<bean>标签之使用p标签配置bean的属性
在spring的bean配置文件中我们常可以见到下面的例子: <bean id="user" class="com.sys.User" p:name-re ...
- wpf--- TextBlock文字设置属性
ProgressBar控件的重要属性: FontFamily——控件中显示文本的字体 FontSize——控件中显示的字体的大小 Foreground——控件 ...
- MAP 最大后验——利用经验数据获得对未观测量的点态估计
Map (最大后验) 在贝叶斯统计学中,最大后验(Maximum A Posteriori,MAP)估计可以利用经验数据获得对未观测量的点态估计.它与Fisher的最大似然估计(Maximum Lik ...
- Spring MVC中使用Swagger生成API文档和完整项目示例Demo,swagger-server-api(二十)
一:Swagger介绍 Swagger是当前最好用的Restful API文档生成的开源项目,通过swagger-spring项目 实现了与SpingMVC框架的无缝集成功能,方便生成spring r ...
- POJ 2689 筛法求素数
DES:给出一个区间[L, U].找出这个区间内相邻的距离最近的两个素数和距离最远的两个素数.其中1<=L<U<=2147483647 区间长度不超过1000000. 思路:因为给出 ...
- 64位Ubuntu系统安装OpenCV 2.4.x+ffmpeg 完美解决方案
http://www.bfcat.com/index.php/2012/09/64bits-ubuntu-opencv-2-4-x-ffmpeg/
- 【LeetCode 36_哈希表】Valid Sudoku
//occupyed_1检查行是否占用 //occupyed_2检查列是否占用 //occupyed_3检查块是否占用 bool isValidSudoku(vector<vector<c ...
- STL标准库-容器-deque
技术在于交流.沟通,本文为博主原创文章转载请注明出处并保持作品的完整性. deque双向开口可进可出的容器 我们知道连续内存的容器不能随意扩充,因为这样容易扩充别人那去 deque却可以,它创造了内存 ...
- python爬虫错误
错误描述 TypeError: list indices must be integers or slices, not str 错误缘由 取标签属性的时候, find_all()函数与find()函 ...
- flask第二十四篇——模板【6】自定义过滤器
请关注孟船长的公众号:自动化测试实战 大家想了解其他过滤器可以参考这里: http://jinja.pocoo.org/docs/dev/templates/#builtin-filters ---- ...