找回密码
 注册
快捷导航
楼主: Drifter

【求助】问个难点的, 电话本的编码转换

[复制链接] |自动提醒
阅读字号:

9万

回帖

603

积分

21万

资产值

天下无敌I Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

注册时间
2004-6-23
 楼主| 发表于 2006-11-26 05:00:01| 字数 818| - 中国–广东–深圳 天威有线宽带(关内) | 显示全部楼层
这是一个在普通手机(SE)上输入的联系人传到电脑上的vCard文件. 它传到另一个手机上(NEC)上后完全正常, 全部字段包括NOTE字段都很正常. 这个可以看成是我们的目标文件格式. 它已经包括了最常用到中文的几个字段.

注意那些quoted-printable在换行的时候多了一个"=", 不知道为什么. 原文件也附在下面.


BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;Test=E4=B8=AD=E6=96=87=E5=90=8D==
E5=AD=97
TITLE;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=E7=BB=8F=E7=90=86
ORG;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=E5=85=AC=E5=8F=B8=E5=90=8D=E5==
AD=97
TEL;WORK:075512345678
TEL;CELL:13902945678
EMAIL;INTERNET;PREF:test@mail.com
EMAIL;INTERNET:
EMAIL;INTERNET:
URL:www.web.com
ADR;HOME;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;;=E5=9C=B0=E5=9D=802;;;;
ADR;WORK;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;;=E5=9C=B0=E5=9D=801;;;;
NOTE;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=E5=85=B6=E5=AE=83=E8=AF=B4=E6=
=98=8E=E6=96=87=E5=AD=97
X-IRMC-LUID:000200000215
END:VCARD

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复 支持 反对

使用道具 举报

9万

回帖

603

积分

21万

资产值

天下无敌I Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

注册时间
2004-6-23
 楼主| 发表于 2006-11-26 05:00:52| 字数 89| - 中国–广东–深圳 天威有线宽带(关内) | 显示全部楼层
QUOTE:
原帖由 huanggx 于 2006-11-26 04:51 发表
Drifter兄, 你究竟是要转码的结果还是要转码的解决方案?


我想把650上的电话本转到我的NEC手机上去...
回复 支持 反对

使用道具 举报

761

回帖

4

积分

721

资产值

初级会员 Rank: 1

注册时间
2003-3-12
铜牌荣誉勋章(注册8年以上会员)
发表于 2006-11-26 05:13:53| 字数 194| - 中国–北京–北京 联通 | 显示全部楼层
被quoted-printable编码的是utf-8。这个用脚本不好转换了。java可以胜任。

至于行尾那个多出来的=,可能是规范吧。但上面你贴出来的ADDR字段,怎么会有=801,=802?
三位数是什么?

要完全正确地转码,需要研究vcard规范。如果只是为了转换几个vcard,那就具体问题具体分析,简单地代码处理。
要规范解决,要花费很大精力和时间。所以我才问你究竟是要结果还是要解决方案
T60 AZ7 CPU-DUO 2.0G, MEM-2G, HD-100G, DVD 24xCD-RW  Windows Vista Enterprise
回复 支持 反对

使用道具 举报

761

回帖

4

积分

721

资产值

初级会员 Rank: 1

注册时间
2003-3-12
铜牌荣誉勋章(注册8年以上会员)
发表于 2006-11-26 05:17:29| 字数 8| - 中国–北京–北京 联通 | 显示全部楼层
我去睡觉了, 晚安
T60 AZ7 CPU-DUO 2.0G, MEM-2G, HD-100G, DVD 24xCD-RW  Windows Vista Enterprise
回复 支持 反对

使用道具 举报

9万

回帖

603

积分

21万

资产值

天下无敌I Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

注册时间
2004-6-23
 楼主| 发表于 2006-11-26 05:19:48| 字数 986| - 中国–广东–深圳 天威有线宽带(关内) | 显示全部楼层
BEGIN:VCARD
VERSION:2.1
X-PALM:4.0
N;CHARSET=windows-1252:Test;测试用户
CHARSET=windows-1252
公司名字也很容易出问题
ADR;WORK;CHARSET=windows-1252:;;工作地址;;;;
ORG;CHARSET=windows-1252;ENCODING=QUOTED-PRINTABLE:=
=B9=AB=CB=BE=C3=FB=D7=D6=D2=B2=BA=DC=C8=DD=D2=D7=B3=F6=CE=CA=CC=E2
NOTE;CHARSET=windows-1252;ENCODING=QUOTED-PRINTABLE:=
=D2=BB=D0=A9=CB=B5=C3=F7. =BA=DC=B3=A4=BA=DC=B6=E0=B5=C4=CB=B5=C3=F7=2C =
=B6=E0=B5=BD=C8=ED=BC=FE=B4=A6=C0=ED=B2=BB=C1=CB=CE=AA=D6=B9.
TEL;PREF;WORK;VOICE:075587654321
TEL;CELL:13912345678
UID:13264502
END:VCARD

这个是650产生的vCard, 这次终于看清楚了. 虽然都是qoted-printable, 但它们的真实编码, 却是按照它前面所说的那个编码来做的. 虽然都加了一堆"="号, 但其实是不一样的, 所以不能直接改一下编码的名字. 电话不认的. 大概它不符合某种校验.

现在比较清楚了, 我所需要做的如下:

对于非NOTE字段, 找到windows-1252, (有这个表示后面跟的是非英文的内容, 在我们这里就是中文的内容了).  把里面的中文字从GB码转成utf-8, 并且用quoted-printable表示. 然后把前面的编码名字相应地变成utf-8.

对于NOTE字段, 找到windows-1252, 接着把后面的quoted-printable表示的中文转成gb码, 然后转成utf-8, 然后再用quoted-printable表示. 最后把编码的名字改成utf-8.

因为是对一个大文件进行转换, 一直扫到eof为止. 这样就不需要分割原来的文件了.


PS, NOTE字段特殊, 是因为在650上, 它不在标准的联系人里面, 而是用一种附加的方式跟着联系人, 所以它已经被编码了.
回复 支持 反对

使用道具 举报

9万

回帖

603

积分

21万

资产值

天下无敌I Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

注册时间
2004-6-23
 楼主| 发表于 2006-11-26 05:21:38| 字数 301| - 中国–广东–深圳 天威有线宽带(关内) | 显示全部楼层
QUOTE:
原帖由 huanggx 于 2006-11-26 05:13 发表
被quoted-printable编码的是utf-8。这个用脚本不好转换了。java可以胜任。

至于行尾那个多出来的=,可能是规范吧。但上面你贴出来的ADDR字段,怎么会有=801,=802?
三位数是什么?

要完全正确地转码,需要 ...


上面的这个是"目标"格式, 也就是说, 先把gb转成utf-8, 然后以quoted-printable表示.

那个801, 是数字1, 802, 是数字2 . 整个的内容分别是"地址1"和"地址2".

希望明天有时间再来看看. 我上面已经把整个过程都分析清楚了.
回复 支持 反对

使用道具 举报

9万

回帖

603

积分

21万

资产值

天下无敌I Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

注册时间
2004-6-23
 楼主| 发表于 2006-11-26 05:30:09| 字数 560| - 中国–广东–深圳 天威有线宽带(关内) | 显示全部楼层
QUOTE:
原帖由 yiylu 于 2006-11-26 03:51 发表
我的也来了!
用法:待处理文件改名为 start.vcf
处理好生成: ready.vcf
如需继续下一个,请移走 ready.vcf 再进行。

下载:http://www.luzhinan.com/vcard.rar


这个程序的框架已经够了, 下面是正确的处理过程:

=============================
对于非NOTE字段, 找到windows-1252, (有这个表示后面跟的是非英文的内容, 在我们这里就是中文的内容了).  把里面的中文字从GB码转成utf-8, 并且用quoted-printable表示. 然后把前面的编码名字相应地变成utf-8.

对于NOTE字段, 找到windows-1252, 接着把后面的quoted-printable表示的中文字还原成gb码, 然后转成utf-8, 然后再用quoted-printable表示. 最后把编码的名字改成utf-8.

因为是对一个大文件进行转换, 一直扫到eof为止. 这样就不需要分割原来的文件了.
=================================================

PS, NOTE字段特殊, 是因为在650上, 它不在标准的联系人里面, 而是用一种附加的方式跟着联系人, 所以它已经被编码了.
回复 支持 反对

使用道具 举报

1741

回帖

16

积分

5312

资产值

白金会员 Rank: 3Rank: 3Rank: 3

注册时间
2005-10-8
月全勤勋章
发表于 2006-11-26 09:17:08| 字数 85| - 中国–江苏–苏州–昆山市 电信 | 显示全部楼层
QUOTE:
原帖由 Drifter 于 2006-11-25 21:43 发表


哦, 对了. 它自己带的桌面同步软件. 不用这个行不行? 因为根本没有装它.

装一下就可以了,何必这么麻烦。。。
T400/W541/T14
回复 支持 反对

使用道具 举报

9万

回帖

603

积分

21万

资产值

天下无敌I Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

注册时间
2004-6-23
 楼主| 发表于 2006-11-26 13:03:13| 字数 87| - 中国–广东–深圳 天威有线宽带(关内) | 显示全部楼层
QUOTE:
原帖由 chippendale 于 2006-11-26 09:17 发表

装一下就可以了,何必这么麻烦。。。


也许吧. 虽然装了会有其它的一些问题. 没办法了这个也算是一个办法.
回复 支持 反对

使用道具 举报

876

回帖

14

积分

2274

资产值

黄金会员 Rank: 3Rank: 3Rank: 3

注册时间
2006-1-17
发表于 2006-11-26 17:30:43| 字数 271| - 中国–广东–广州 新一代技术(广州)有限公司BGP节点 | 显示全部楼层
quoted printable 的编码/解码 现已不成问题。

现在的关键是描出 650 生成的 vcard 的格式规律,这个清晰了问题就解决了。

Drifter 你给出 650 vcard 的标准格式,要有代表性的。因为我目前对650的格式尚存疑问,
95楼的例子很好,你就用这个sample,但“公司名字也很容易出问题”我就不明了,他属于那部分的信息。同时,你再放上各项的信息的具体内容,我才能弄清分界点。

还有650的vcard导入其他手机后,哪些能显示,哪些不行,你还没说清楚。

这么一来所有就近乎解决了!

[ 本帖最后由 yiylu 于 2006-11-26 17:37 编辑 ]
回复 支持 反对

使用道具 举报

9万

回帖

603

积分

21万

资产值

天下无敌I Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

注册时间
2004-6-23
 楼主| 发表于 2006-11-26 18:04:42| 字数 262| - 中国–广东–广州 联通 | 显示全部楼层
QUOTE:
原帖由 yiylu 于 2006-11-26 17:30 发表
quoted printable 的编码/解码 现已不成问题。

现在的关键是描出 650 生成的 vcard 的格式规律,这个清晰了问题就解决了。

Drifter 你给出 650 vcard 的标准格式,要有代表性的。因为我目前对650的格式尚存 ...


"公司名字..."那个字段是ORG, 也就是联系人里面的"公司"一项.

我上面给出的例子及说明, 已经是很典型的了. 就照着这个来做应该就可以了.

我认为650的格式我已经描述得很清楚了. 还有哪里不明确?
回复 支持 反对

使用道具 举报

9万

回帖

603

积分

21万

资产值

天下无敌I Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

注册时间
2004-6-23
 楼主| 发表于 2006-11-26 18:05:42| 字数 25| - 中国–广东–广州 联通 | 显示全部楼层
91楼的内容, 导入任何手机都可以完整正确地显示的.
回复 支持 反对

使用道具 举报

9万

回帖

603

积分

21万

资产值

天下无敌I Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

注册时间
2004-6-23
 楼主| 发表于 2006-11-26 18:08:45| 字数 189| - 中国–广东–广州 联通 | 显示全部楼层
650生成的文件, 换行比较奇怪. 就比如"公司名字..."那一行, 我觉得是前面的"windows-1252"后面少了一个":"或";", 所以不对. 但这些内容我没有改过的.

看起来, NOTE部分要单独处理.

除了NOTE以外的部分, 应该在"windows-1252"后面都有一个分隔符.
回复 支持 反对

使用道具 举报

876

回帖

14

积分

2274

资产值

黄金会员 Rank: 3Rank: 3Rank: 3

注册时间
2006-1-17
发表于 2006-11-26 21:26:40| 字数 99| - 中国–广东–广州 新一代技术(广州)有限公司BGP节点 | 显示全部楼层
All Done! 顺利转换成 UTF-8 编码的 quoted_printable 数据。

因为我这outlook会乱码,所以测试也许不充分。你试试~

[ 本帖最后由 yiylu 于 2006-11-26 21:38 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复 支持 反对

使用道具 举报

9万

回帖

603

积分

21万

资产值

天下无敌I Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

注册时间
2004-6-23
 楼主| 发表于 2006-11-26 21:57:12| 字数 12| - 中国–广东–深圳 天威有线宽带(关内) | 显示全部楼层
这几天专门网, 慢死人了.
回复 支持 反对

使用道具 举报

876

回帖

14

积分

2274

资产值

黄金会员 Rank: 3Rank: 3Rank: 3

注册时间
2006-1-17
发表于 2006-11-26 22:02:27| 字数 43| - 中国–广东–广州 新一代技术(广州)有限公司BGP节点 | 显示全部楼层
回复 支持 反对

使用道具 举报

9万

回帖

603

积分

21万

资产值

天下无敌I Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

注册时间
2004-6-23
 楼主| 发表于 2006-11-26 22:07:50| 字数 28| - 中国–广东–深圳 天威有线宽带(关内) | 显示全部楼层
一国二网又出问题了. 二个小文件居然下不下来...气死人.
回复 支持 反对

使用道具 举报

9万

回帖

603

积分

21万

资产值

天下无敌I Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

注册时间
2004-6-23
 楼主| 发表于 2006-11-26 22:10:07| 字数 88| - 中国–广东–深圳 天威有线宽带(关内) | 显示全部楼层
QUOTE:
原帖由 yiylu 于 2006-11-26 22:02 发表
来个镜像:
http://www.luzhinan.com/vcard-rev1.rar


3秒钟就搞下来了...吼吼
回复 支持 反对

使用道具 举报

876

回帖

14

积分

2274

资产值

黄金会员 Rank: 3Rank: 3Rank: 3

注册时间
2006-1-17
发表于 2006-11-26 22:19:46| 字数 252| - 中国–广东–广州 新一代技术(广州)有限公司BGP节点 | 显示全部楼层
QUOTE:
原帖由 Drifter 于 2006-11-26 18:08 发表
650生成的文件, 换行比较奇怪. 就比如"公司名字..."那一行, 我觉得是前面的"windows-1252"后面少了一个":"或";", 所以不对. 但这些内容我没有改过的.

看起来, NOTE部 ...


我也觉得这个有问题,单独这么一行,上下无关联的,所以我首先就把它去掉。

vcard 行末尾的“=”是连接符,“:”后面的是字段的值。

有问题提出来,我继续《迈阿密风云》了
回复 支持 反对

使用道具 举报

9万

回帖

603

积分

21万

资产值

天下无敌I Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

注册时间
2004-6-23
 楼主| 发表于 2006-11-26 22:35:12| 字数 439| - 中国–广东–深圳 天威有线宽带(关内) | 显示全部楼层
Note部分还是不理想. 先是转换到某个地方直接停下来了. 我把那个有问题的Note拿掉, 可以继续了. 但产生的文件在NEC手机里面显示到某个名字就不显示了. (应该是某种校验不对).

我干脆把源文件中所有的NOTE全部拿到, 一切就都正常了.

据我观察, 在Note中有=0D=0A的地方就很有可能出问题. (原来的NOTE中回车/换行).

联系到quoted-printable本身对换行处理的问题. 可以理解.

我没有仔细去对一下, 是不是一行NOTE就没有问题, 多行就有问题. 基本上NOTE部分不是最重要的. 所以我的目的可以说90%已经达到了. 谢谢.

想不想再搞清楚? 想玩的话我们可以再研究下.

我觉得, 加个界面, 你可以把这个东西做成一个for 650的shareware了

QUOTE:
原帖由 yiylu 于 2006-11-26 22:19 发表


我也觉得这个有问题,单独这么一行,上下无关联的,所以我首先就把它去掉。

vcard 行末尾的“=”是连接符,“:”后面的是字段的值。

有问题提出来,我继续《迈阿密风云》了
回复 支持 反对

使用道具 举报

876

回帖

14

积分

2274

资产值

黄金会员 Rank: 3Rank: 3Rank: 3

注册时间
2006-1-17
发表于 2006-11-27 01:30:51| 字数 65| - 中国–广东–广州 新一代技术(广州)有限公司BGP节点 | 显示全部楼层
有空我再改进一下算法,转换完美是最基本的。用#95的例子转换好能完全读取吗?你是说转换后=0D=0A夹杂在里面,那样肯定会有问题。
回复 支持 反对

使用道具 举报

9万

回帖

603

积分

21万

资产值

天下无敌I Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

注册时间
2004-6-23
 楼主| 发表于 2006-11-27 01:39:55| 字数 952| - 中国–广东–深圳 天威有线宽带(关内) | 显示全部楼层
QUOTE:
原帖由 yiylu 于 2006-11-27 01:30 发表
有空我再改进一下算法,转换完美是最基本的。用#95的例子转换好能完全读取吗?你是说转换后=0D=0A夹杂在里面,那样肯定会有问题。



用#95的例子转换的结果是有问题的.

结果是这样的:

BEGIN:VCARD
VERSION:2.1
X-PALM:4.0
N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:Test;=e6=b5=8b=e8=af=95=e7=94=a8=e6=88=b7
=e5=85=ac=e5=8f=b8=e5=90=8d=e5=ad=97=e4=b9=9f=e5=be=88=e5=ae=b9=e6=98=93=e5=87=ba=e9=97=ae=e9=a2=98
ADR;WORK;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;;=e5=b7=a5=e4=bd=9c=e5=9c=b0=e5=9d=80;;;;
ORG;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=e5=85=ac=e5=8f=b8=e5=90=8d=e5=ad=97=e4=b9=9f=e5=be=88=e5=ae=b9=e6=98=93=e5=87=ba=e9=97=ae=e9=a2=98
NOTE;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=e4=b8=80=e4=ba=9b=e8=af=b4=e6=98=8e. =e5=be=88=e9=95=bf=e5=be=88=e5=a4=9a=e7=9a=84=e8=af=b4=e6=98=8e,
=e5=a4=9a=e5=88=b0=e8=bd=af=e4=bb=b6=e5=a4=84=e7=90=86=e4=b8=8d=e4=ba=86=e4=b8=ba=e6=ad=a2.
TEL;PREF;WORK;VOICE:075587654321
TEL;CELL:13912345678
UID:13264502
END:VCARD

在电话上的效果是, 只有名字显示出来了, 后面的东西不见了. 也就是说, 名字那部分的quoted-printable是有问题的. 导致后面的不被识别了.
回复 支持 反对

使用道具 举报

9万

回帖

603

积分

21万

资产值

天下无敌I Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

注册时间
2004-6-23
 楼主| 发表于 2006-11-27 01:53:22| 字数 1,600| - 中国–广东–深圳 天威有线宽带(关内) | 显示全部楼层
QUOTE:
原帖由 Drifter 于 2006-11-27 01:39 发表



用#95的例子转换的结果是有问题的.

结果是这样的:

BEGIN:VCARD
VERSION:2.1
X-PALM:4.0
N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:Test;=e6=b5=8b=e8=af=95=e7=94=a8=e6=88=b7
=e5=85=ac=e5=8f ...



看了一下, 这个不是你的转换软件的问题.

首先, 那个"公司名字也很容易出问题"本身有问题. 第二, 后面的NOTE部分似乎太长了. 电话本身是可以支持很长的说明, 但可能传的过程有限制, 太长以后, 后面的东西全部不认了.

我把输入的文件作了一些调整如下. 主要是把"公司名字..."那部分放入ORG字段, 并且在1252后面加了一个":". 还有, 把电话号码放在NOTE前面了.

BEGIN:VCARD
VERSION:2.1
X-PALM:4.0
N;CHARSET=windows-1252:Test;测试用户
ADR;WORK;CHARSET=windows-1252:;;工作地址;;;;
ORG;CHARSET=windows-1252:公司名字也容易出问题
TEL;PREF;WORK;VOICE:075587654321
TEL;CELL:13912345678
NOTE;CHARSET=windows-1252;ENCODING=QUOTED-PRINTABLE:=
=D2=BB=D0=A9=CB=B5=C3=F7. =BA=DC=B3=A4=BA=DC=B6=E0=B5=C4=CB=B5=C3=F7=2C =
=B6=E0=B5=BD=C8=ED=BC=FE=B4=A6=C0=ED=B2=BB=C1=CB=CE=AA=D6=B9.
UID:13264502
END:VCARD


这样, 转换的结果基本对头, 如下:
BEGIN:VCARD
VERSION:2.1
X-PALM:4.0
N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:Test;=e6=b5=8b=e8=af=95=e7=94=a8=e6=88=b7
ADR;WORK;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;;=e5=b7=a5=e4=bd=9c=e5=9c=b0=e5=9d=80;;;;
ORG;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=e5=85=ac=e5=8f=b8=e5=90=8d=e5=ad=97=e4=b9=9f=e5=ae=b9=e6=98=93=e5=87=ba=e9=97=ae=e9=a2=98
TEL;PREF;WORK;VOICE:075587654321
TEL;CELL:13912345678
NOTE;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=e4=b8=80=e4=ba=9b=e8=af=b4=e6=98=8e. =e5=be=88=e9=95=bf=e5=be=88=e5=a4=9a=e7=9a=84=e8=af=b4=e6=98=8e,
=e5=a4=9a=e5=88=b0=e8=bd=af=e4=bb=b6=e5=a4=84=e7=90=86=e4=b8=8d=e4=ba=86=e4=b8=ba=e6=ad=a2.
UID:13264502
END:VCARD

把这个结果放进电话, 一切都正常了, 除了后面的NOTE部分在电话上只显示到那个","为止. 后面的没有了. 但是, 可以在电话上继续增加, 也就是电话本身是可以支持更长的说明部分的文字的.

应该说转换软件已经没有太大的问题了. 但源文件的NOTE部分似乎不太容易把握.
回复 支持 反对

使用道具 举报

9万

回帖

603

积分

21万

资产值

天下无敌I Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

注册时间
2004-6-23
 楼主| 发表于 2006-11-27 01:54:19| 字数 45| - 中国–广东–深圳 天威有线宽带(关内) | 显示全部楼层
上面说的ODOA, 是在转换前的源文件存在. 如果源文件中有这个0D0A, 转换似乎就会不正常.
回复 支持 反对

使用道具 举报

876

回帖

14

积分

2274

资产值

黄金会员 Rank: 3Rank: 3Rank: 3

注册时间
2006-1-17
发表于 2006-11-27 02:53:18| 字数 703| - 中国–广东–广州 新一代技术(广州)有限公司BGP节点 | 显示全部楼层
严重怀疑是不同平台之间的兼容问题,改成这个试试(去掉 X-PALM 部分,改了 UID):
BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:Test;=e6=b5=8b=e8=af=95=e7=94=a8=e6=88=b7
ADR;WORK;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;;=e5=b7=a5=e4=bd=9c=e5=9c=b0=e5=9d=80;;;;
ORG;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=e5=85=ac=e5=8f=b8=e5=90=8d=e5=ad=97=e4=b9=9f=e5=be=88=e5=ae=b9=e6=98=93=e5=87=ba=e9=97=ae=e9=a2=98
NOTE;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=e4=b8=80=e4=ba=9b=e8=af=b4=e6=98=8e. =e5=be=88=e9=95=bf=e5=be=88=e5=a4=9a=e7=9a=84=e8=af=b4=e6=98=8e,
=e5=a4=9a=e5=88=b0=e8=bd=af=e4=bb=b6=e5=a4=84=e7=90=86=e4=b8=8d=e4=ba=86=e4=b8=ba=e6=ad=a2.
TEL;PREF;WORK;VOICE:075587654321
TEL;CELL:13912345678
X-IRMC-LUID:000013264502
END:VCARD
回复 支持 反对

使用道具 举报

9万

回帖

603

积分

21万

资产值

天下无敌I Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

注册时间
2004-6-23
 楼主| 发表于 2006-11-27 03:03:48| 字数 369| - 中国–广东–深圳 天威有线宽带(关内) | 显示全部楼层
QUOTE:
原帖由 yiylu 于 2006-11-27 02:53 发表
严重怀疑是不同平台之间的兼容问题,改成这个试试(去掉 X-PALM 部分,改了 UID):
BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:Test;=e6=b5=8b=e8=af=95=e7=94=a8=e6=88=b7
ADR;WO ...



这个文件, 放在NEC上就会出现后面的号码部分出不来的现象. 放在SE(索爱)上, 就一切正常. 当然, 说明部分还是被截断了, 截断的长度与在NEC上一样.

可见你的推断是正确的. 确实是兼容性的问题. 因为我给你的格式是从SE上导出的. 所以, 同样的格式在SE上正常. 但NEC不支持从手机导出vCard文件, 所以无法得知.

至此, 基本的都完成了吧? 兼容性的东西, 就没有办法去搞了.
回复 支持 反对

使用道具 举报

9万

回帖

603

积分

21万

资产值

天下无敌I Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

注册时间
2004-6-23
 楼主| 发表于 2006-11-27 03:06:41| 字数 210| - 中国–广东–深圳 天威有线宽带(关内) | 显示全部楼层
QUOTE:
原帖由 Drifter 于 2006-11-27 03:03 发表



这个文件, 放在NEC上就会出现后面的号码部分出不来的现象. 放在SE(索爱)上, 就一切正常. 当然, 说明部分还是被截断了, 截断的长度与在NEC上一样.

可见你的推断是正确的. 确实是兼容性的问题. 因为我给你 ...


又做了一个试验, 把上面的文件里, NOTE后面长出来的那部分删除, 再传给NEC, 前面的号码显示正常啦.

可见NEC手机的软件做得烂而已. SE就好得多了.
回复 支持 反对

使用道具 举报

876

回帖

14

积分

2274

资产值

黄金会员 Rank: 3Rank: 3Rank: 3

注册时间
2006-1-17
发表于 2006-11-27 03:08:34| 字数 39| - 中国–广东–广州 新一代技术(广州)有限公司BGP节点 | 显示全部楼层
唉,好好的vcard统一标准给厂商弄成这样,实在没意思。呵呵,可以划个句号了。
回复 支持 反对

使用道具 举报

9万

回帖

603

积分

21万

资产值

天下无敌I Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

注册时间
2004-6-23
 楼主| 发表于 2006-11-27 03:10:47| 字数 819| - 中国–广东–深圳 天威有线宽带(关内) | 显示全部楼层
QUOTE:
原帖由 yiylu 于 2006-11-27 03:08 发表
唉,好好的vcard统一标准给厂商弄成这样,实在没意思。呵呵,可以划个句号了。


在SE上给说明部分加了点内容, 再弄回到电脑上, 是这样子:

BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:Test;=E6=B5=8B=E8=AF=95=E7=94=A8==
E6=88=B7
ORG;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=E5=85=AC=E5=8F=B8=E5=90=8D=E5==
AD=97=E4=B9=9F=E5=BE=88=E5=AE=B9=E6=98=93=E5=87=BA=E9=97=AE=E9=A2=98
TEL;CELL:13912345678
TEL:075587654321
EMAIL;INTERNET;PREF:
EMAIL;INTERNET:
EMAIL;INTERNET:
ADR;WORK;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;;=E5=B7=A5=E4=BD=9C=E5=9C=
=B0=E5=9D=80;;;;
NOTE;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=E4=B8=80=E4=BA=9B=E8=AF=B4=E6=
=98=8E. =E5=BE=88=E9=95=BF=E5=BE=88=E5=A4=9A=E7=9A=84=E8=AF=B4=E6=98=8E,=E5=
=A4=9A=E5=88=B0=E6=89=8B=E6=9C=BA=E4=B8=8D=E8=AE=A4=E8=AF=86.
X-IRMC-LUID:0002000006DA
END:VCARD

可见你的转换是没有问题的. 这个长度的限制, 不知道是哪里来的.

谢谢啦, 解决了我一个很实际的问题.
回复 支持 反对

使用道具 举报

876

回帖

14

积分

2274

资产值

黄金会员 Rank: 3Rank: 3Rank: 3

注册时间
2006-1-17
发表于 2006-11-27 03:11:53| 字数 142| - 中国–广东–广州 新一代技术(广州)有限公司BGP节点 | 显示全部楼层
QUOTE:
原帖由 Drifter 于 2006-11-27 03:06 发表


又做了一个试验, 把上面的文件里, NOTE后面长出来的那部分删除, 再传给NEC, 前面的号码显示正常啦.

可见NEC手机的软件做得烂而已. SE就好得多了.


字符截取我还可以实现,告诉我最大允许多少字,程序先做截取再编码转换。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.5 © 2001-2023 Comsenz Inc

GMT+8, 2025-2-3 20:11 , Processed in 0.170365 second(s), 56 queries , Gzip On, OPcache On.

手机版|小黑屋|安卓客户端|iOS客户端|Archiver|备用网址1|备用网址2|在线留言|专门网

返回顶部