联系人列不等于完整vCard
电话列是可编辑文本,联系人记录还包含重复属性、类型与组件列表。
原帖失败来自引号
原作者贴出德语分号联系人CSV及JSON列映射命令,自己的回答指出shell引号导致脚本收到无效JSON。联系人转换器解决迁移任务,而不修复该编程环境错误;原件中的客户号和末尾空列也需要明确保留。
重复电话是独立属性
把两个电话连接到单元格,无法保留不同TYPE或group。可编辑导出提供TEL_1/TEL_2列,精确参数在记录文件中;N和ADR保留有序组件及组件内多值。不要按标点切姓氏或猜地址。
按接收程序选择交付文件
contacts.csv是可编辑文本列,重复字段使用编号列。组件多值为便于编辑而连接展示;精确数组、全部参数与group仍保留在contacts.json和roundtrip.csv。用records映射重导roundtrip.csv可保真恢复;普通客户端CSV模板仍需按其字段映射。
默认将未映射CSV列和不支持的vCard属性完整写入报告,也可选择整体拒绝。NICKNAME、BDAY、ROLE、X属性与PHOTO保留在侧车及原件中,不进入核心迁移文件;不会获取头像或URL。
替换通讯录前先测试导入副本,不承诺所有客户端的私有CSV模板或不支持vCard属性均兼容。
| 交付文件 | 保留内容 | 交付前的操作 |
|---|---|---|
| contacts.csv | 可编辑文本列;重复字段编号,组件多值连接展示。参数及 group 仍在记录文件中。 | 对照接收客户端的 CSV 模板,并在导入前单独核对参数。 |
| roundtrip.csv | 支持的核心属性的精确数组、参数及 group。 | 用 records 映射重导;它不是普通客户端的 CSV 模板。 |
| contacts.vcf | CSV 转 vCard 模式下,支持的 vCard 3.0 属性及允许的参数;未知属性不进入核心迁移文件。 | 替换通讯录前,先在接收客户端测试导入副本。 |
| migration-report.json + source-original | 未映射/不支持数据侧车,以及实际输入的逐字节原件。 | 与迁移文件一起保存;另行安排客户端不能导入的数据。 |
- 将 TEL_1/TEL_2 作为独立号码列,再到 contacts.json 核对 TYPE 和 group,随后决定各号码在接收客户端中的字段。
- 编辑列时保留 N/ADR 组件顺序;需要保留组件内多值时,使用 records 映射。
- 先决定接收程序如何保留客户号及不支持字段;写入侧车并不等于这些数据会自动导入。
UTF-8折行必须保留完整字符
映射文本内的CRLF归一为LF;vCard输出采用CRLF,并按75个UTF-8字节折行,不切断字符。TEL中的反斜线/换行和URL中的空白/反斜线会拒绝。CSV空标量单元格省略该属性,records可以显式保留空值。
预览最多4,000个Unicode码点,复制和下载保留完整输出。整次运行10秒时限从引擎加载前开始,覆盖Worker就绪、文件读取和处理;取消会销毁Worker,可用保留的同一File和参数重跑。所有输入留在浏览器。
参考资料
- 实际CSV转vCard脚本问题
复现原帖分号CSV。作者后续指出脚本失败来自shell JSON引号丢失;本工具不修复其编程环境。
- vCard3.0规范
本迁移所用 vCard 3.0 字段的格式参考。
- 目录文本折行与内容行
目录内容行与折行的格式参考。