Drifter 发表于 2006-11-25 14:52

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

从650里面导出的电话本, 里面的中文用的是"N;CHARSET=windows-1252".

这样的编码, 在普通的手机里是不会显示出来的. 在电脑上基本显示乱码.

以前有一次, 经过复杂的转换, 用到了一个palm的pda, mac机, PC上的Outlook等等, 转成功一次. 但现在想不起来怎么弄了, 也实在是麻烦. 关键是找一个东西, 可以接受1252的编码并正确显示, 然后导出成utf编码就可以了. "N;CHARSET=UTF-8"

求简单易行的转换方法或软件.

Drifter 发表于 2006-11-25 20:03

真有这么难? 一个回帖都没有?!

cdmdrd 发表于 2006-11-25 21:09

试试100nb的威力:D
windows-1252就是Western European (windows)编码
用editplus等等文本编辑器就可以转换

chippendale 发表于 2006-11-25 21:14

其实很简单的。我以前也用过PALM,装上桌面同步软件,打开OUTLOOK同步,注意:是MS OFFICE里的的OUTLOOK
然后就可以把电话本同步到OUTLOOK里了,然后就不用我说了吧。

jarodpeach 发表于 2006-11-25 21:24

如果已经有一个编码正确的文件,粘贴不带编码的内容进去就是那个编码了

yiylu 发表于 2006-11-25 21:38

windows-1252,这个是俄文常用编码之一,中文不大可能用这个编码,估计是编码解析软件误判。
你截取一部分作sample给我看看,编码转换通常很简单。我一般用emeditor,另存为相应编码就行了。

Drifter 发表于 2006-11-25 21:43

原帖由 chippendale 于 2006-11-25 21:14 发表
其实很简单的。我以前也用过PALM,装上桌面同步软件,打开OUTLOOK同步,注意:是MS OFFICE里的的OUTLOOK
然后就可以把电话本同步到OUTLOOK里了,然后就不用我说了吧。

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

Drifter 发表于 2006-11-25 21:47

不是很明白.

看过在一般手机上导出的文件, 是这样的:

N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:Chen=XX=XX=XX=XX=XX=XX

(XX那些当然原来是一个代码, 二个HEX数字)

真正要转换的就是这部分了.

原帖由 jarodpeach 于 2006-11-25 21:24 发表
如果已经有一个编码正确的文件,粘贴不带编码的内容进去就是那个编码了

Drifter 发表于 2006-11-25 22:03

再看了看, 如果是在已经有中文环境的时候在650上输入的中文, 虽然编码还是1252, 但在XP下可以正确识别, 显示, 导入Outlook也正确的.

如果一个一个联系人单独导出, 再导入Outlook是可以正确转换的. 但很显然这样太麻烦了.

从手机里面可以导出整个电话本, 所有的联系人都在同一个文件里面.如果导入这个大文件到Outlook, 它只认第一个.

这样看来, 只要有个办法, 把那个大的电话本文件切割成一个一个的小文件, 就可以了.

下面是一个vCard文件的sample, 大文件就是把一个一个这样的文件连在一起. 有明确的标志, 分割还是可能的.

另外, 里面也有几个要转换一下. 那些是comment, 也需要正确转换的.

BEGIN:VCARD
VERSION:2.1
X-PALM:4.0
N;CHARSET=windows-1252:Test;测试用户
CHARSET=windows-1252
ADR;WORK;CHARSET=windows-1252:;;工作地址;;;;
NOTE;CHARSET=windows-1252;ENCODING=QUOTED-PRINTABLE:=
=D2=BB=D0=A9=CB=B5=C3=F7
TEL;PREF;WORK;VOICE:075587654321
TEL;CELL:13912345678
UID:13264502
END:VCARD

yiylu 发表于 2006-11-25 22:14

需要特殊编码的就是那些中文。notepad能正常显示中文的话,直接查找 windows-1252 替换为 UTF-8 ,另存为时编码下拉框选 utf-8,然后保存。应该ok了。

Drifter 发表于 2006-11-25 23:00

原帖由 yiylu 于 2006-11-25 22:14 发表
需要特殊编码的就是那些中文。notepad能正常显示中文的话,直接查找 windows-1252 替换为 UTF-8 ,另存为时编码下拉框选 utf-8,然后保存。应该ok了。


嗯, 那么那些QUOTED-PRINTABLE怎么办?

yiylu 发表于 2006-11-25 23:21

QUOTED-PRINTABLE 这行内容必须给完整的,我才能解码。

Drifter 发表于 2006-11-25 23:33

原帖由 yiylu 于 2006-11-25 23:21 发表
QUOTED-PRINTABLE 这行内容必须给完整的,我才能解码。


上面的就是完整的呀. 你不要管那个换行就行了.

四个中文字, 我看就是把那个"="去掉, 把hex拼起来, 二个字节代表一个中文字而已. 就是不知道用什么编码. 也许是MEMA64?

yiylu 发表于 2006-11-25 23:41

不是的,QUOTED-PRINTABLE 就是一种MIME编码方式,奇怪的是我把他看作gb2312解码出来是:覞袏司明。
有点奇怪,不管这个QUOTED-PRINTABLE项,按开头方法直接转换不能用吗?

[ 本帖最后由 yiylu 于 2006-11-25 23:42 编辑 ]

Drifter 发表于 2006-11-25 23:51

原帖由 yiylu 于 2006-11-25 23:41 发表
不是的,QUOTED-PRINTABLE 就是一种MIME编码方式,奇怪的是我把他看作gb2312解码出来是:覞袏司明。
有点奇怪,不管这个QUOTED-PRINTABLE项,按开头方法直接转换不能用吗?

把文件另存为UTF-8后载入电话是不行的.

行的时候, 编码的名字是UTF-8, 后面的中文是用quoted-printable来表示的.

上面的MEMA写错了, 我就是指MIME. 长久不用这些字, 都生疏了:(

所以, 现在的问题就是怎么样对quoted-printable进行转换了?

Drifter 发表于 2006-11-25 23:53

记得mime是用7位的来表示8位的吧? 应该有些标准的方法啊.

上面的那个四个中文字是"一些说明".

yiylu 发表于 2006-11-25 23:57

这样好了:你分别附上 未处理 和 处理好 的sample文件,我继续分析二者区别。相信很快会有结果。

还有将 vcard 样本的内容描述清楚,这样更好分析。

[ 本帖最后由 yiylu 于 2006-11-25 23:58 编辑 ]

Drifter 发表于 2006-11-26 00:04

直接放上vCard文件吧.

还有它在650上的样子.

Drifter 发表于 2006-11-26 00:21

貌似是这样.

1252的编码, Outlook是可以识别的. 但里面那些quoted-printable的内容, Outlook是不认识的.

只要Outlook显示正确, 再传到普通手机的时候, 显示也是正确的.

Drifter 发表于 2006-11-26 00:24

先能不能想个办法, 把一个大文件切成一个一个单独的vCard文件?

方天虹 发表于 2006-11-26 00:29

hiahia...还是SE手机好~

同步到MS OUTLOOK很方便

再从OUTLOOK同步出去也方便 ~_~

huanggx 发表于 2006-11-26 00:41

=D2=BB=D0=A9=CB=B5=C3=F7
是GBK编码, 是"一些说明"四个汉字

huanggx 发表于 2006-11-26 00:45

我这里有一份UNICODE-GBK-汉字对照表, 还有一个根据这个进行UNICODE-GBK的砖码js代码

huanggx 发表于 2006-11-26 00:46

例如:

4ECE B4D3 从   4ED1 C2D8 仑   4ED3 B2D6 仓   4ED4 D7D0 仔   4ED5 CACB 仕
4ED6 CBFB 他   4ED7 D5CC 仗   4ED8 B8B6 付   4ED9 CFC9 仙   4EDD D9DA 仝
4EDE D8F0 仞   4EDF C7AA 仟   4EE1 D8EE 仡   4EE3 B4FA 代   4EE4 C1EE 令
4EE5 D2D4 以   4EE8 D8ED 仨   4EEA D2C7 仪   4EEB D8EF 仫   4EEC C3C7 们
4EF0 D1F6 仰   4EF2 D6D9 仲   4EF3 D8F2 仳   4EF5 D8F5 仵   4EF6 BCFE 件
4EF7 BCDB 价   4EFB C8CE 任   4EFD B7DD 份   4EFF B7C2 仿   4F01 C6F3 企
4F09 D8F8 伉   4F0A D2C1 伊   4F0D CEE9 伍   4F0E BCBF 伎   4F0F B7FC 伏
4F10 B7A5 伐   4F11 D0DD 休   4F17 D6DA 众   4F18 D3C5 优   4F19 BBEF 伙
4F1A BBE1 会   4F1B D8F1 伛   4F1E C9A1 伞   4F1F CEB0 伟   4F20 B4AB 传
4F22 D8F3 伢   4F24 C9CB 伤   4F25 D8F6 伥   4F26 C2D7 伦   4F27 D8F7 伧
4F2A CEB1 伪   4F2B D8F9 伫   4F2F B2AE 伯   4F30 B9C0 估   4F32 D9A3 伲
4F34 B0E9 伴   4F36 C1E6 伶   4F38 C9EC 伸   4F3A CBC5 伺   4F3C CBC6 似
4F3D D9A4 伽   4F43 B5E8 佃   4F46 B5AB 但   4F4D CEBB 位   4F4E B5CD 低
4F4F D7A1 住   4F50 D7F4 佐   4F51 D3D3 佑   4F53 CCE5 体   4F55 BACE 何
4F57 D9A2 佗   4F58 D9DC 佘   4F59 D3E0 余   4F5A D8FD 佚   4F5B B7F0 佛
4F5C D7F7 作   4F5D D8FE 佝   4F5E D8FA 佞   4F5F D9A1 佟   4F60 C4E3 你
4F63 D3B6 佣   4F64 D8F4 佤   4F65 D9DD 佥   4F67 D8FB 佧   4F69 C5E5 佩
4F6C C0D0 佬   4F6F D1F0 佯   4F70 B0DB 佰   4F73 BCD1 佳   4F74 D9A6 佴
4F76 D9A5 佶   4F7B D9AC 佻   4F7C D9AE 佼   4F7E D9AB 佾   4F7F CAB9 使
4F83 D9A9 侃   4F84 D6B6 侄   4F88 B3DE 侈   4F89 D9A8 侉   4F8B C0FD 例
4F8D CACC 侍   4F8F D9AA 侏   4F91 D9A7 侑   4F94 D9B0 侔   4F97 B6B1 侗

yiylu 发表于 2006-11-26 00:50

下载看了,内容就是gb2312的编码。
分析结果:
650 仅对 Note部分做了 quoted-printable 编码,但却用了 windows-1252 字符集,导致保存的内容错误,故无法正确解码。
也就是说650导出vcard的note项的内容早就给破坏了。

我猜想系统设置中应该能修改的,把 windows-1252 改为 gbk 或 gb2312。

yiylu 发表于 2006-11-26 00:55

看到 huanggx 兄的话了,这样的话那你直接将 windows-1252 替换为 gbk 保存看看,不必转为 utf-8 编码了。

huanggx 发表于 2006-11-26 00:57

quoted-printable类似于http的uriencoding, 只不过quoted-printable把%变为=了.
不知道LZ想怎样处理? 写个js或vbs就可以了

huanggx 发表于 2006-11-26 01:00

最简单的办法是,写一个html文件,加上js代码, 你把导出的vcard文件复制到页面的输入框里, 用js转成正确的格式,复制出来再保存

yiylu 发表于 2006-11-26 01:00

晕,刚找的解码器害了我,竟不支持中文。刚用 php解码 看了一下,果真就是:一些说明

这么来说,极大可能就是 " window-1252 " 改为 " gbk " 就能正确读取了。证明一下吧:D

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

jiyou 发表于 2006-11-26 01:05

给兄弟一个编码转换器
很简单的,复制旧可以转换
前段时间改网页后台 用的

上传 太大了
convertz802编码转换工具
http://alf-li.pcdiscuss.com/files/convertz802.zip

[ 本帖最后由 jiyou 于 2006-11-26 01:07 编辑 ]
页: [1] 2 3 4 5
查看完整版本: 【求助】问个难点的, 电话本的编码转换