piapia123
zh

vCard 名片生成

文本

所有处理都在浏览器本地完成,数据不上传服务器

输入
把文件拖到这里可直接载入
输出

把一份「姓名, 电话, 邮箱」的名单变成可以导入通讯录的 vCard 文本(`.vcf`)。一行一个人,邮箱可以省;姓名里允许有空格与中文。版本可选 3.0 与 4.0,还能加上组织与地址。两个细节决定了导入成不成功:折行按 UTF-8 字节数算(RFC 规定一行不超过 75 个八位组,中文一个字 3 字节,按字符数折会把名字切成两半),以及文本里的 `\`、`;`、`,`、换行要转义(`;` 与 `,` 在 vCard 里是结构分隔符,不转义会让客户端把姓名读成两个字段)。全部在本机生成。

功能

  • 一行一个人:`姓名, 电话, 邮箱`(邮箱可省)
  • vCard 版本可选 3.0 / 4.0
  • 可加组织(`ORG`)与地址(`ADR`)
  • 按 UTF-8 字节折行,一行不超过 75 个八位组,中文不会被切断
  • 正确转义 `\`、`;`、`,` 与换行
  • 3.0 生成 `TEL;TYPE=CELL`,4.0 生成 `TEL;TYPE=cell`
  • 可选去掉电话里的空格、连字符与括号(`+` 保留)
  • 给出联系人数量,`.vcf` 可整块复制

使用方法

  1. 一行一个人地输入「姓名, 电话, 邮箱」
  2. 选择 vCard 版本,需要时填组织与地址
  3. 生成的 .vcf 文本实时出现
  4. 复制 .vcf,保存成文件后导入手机或通讯录

常见问题

名字很长时为什么会被折成两行?
因为 RFC 6350 规定 vCard 的一行不超过 75 个八位组(字节),超出的部分要折到下一行、并以一个空格开头。这里按 UTF-8 字节数折,不会把一个多字节的汉字切开 —— 按字符数折的话,一个 40 字的英文名字会被折(40 < 75),而一个 40 个汉字的地址不会,导入时就会出问题。
为什么要转义分号与逗号?
因为 `;` 与 `,` 在 vCard 里是结构分隔符:`N:姓;名;;;` 用分号分隔姓名的各个部分,多个值用逗号分隔。姓名或组织里如果带一个不转义的分号,客户端会把它读成两个字段。所以工具会把文本里的 `\`、`;`、`,` 与换行都转义,导入后还原成原来的样子。
「去掉电话分隔符」会把国际区号的 `+` 也去掉吗?
不会。它去掉的是空格、连字符、圆括号与点号,`+` 与数字都保留 —— `+` 是国际区号的一部分,去掉之后号码可能就拨不通了。
数据会上传吗?
不会。解析、折行、转义全部在浏览器里完成,页面不发送任何请求。

相关工具