3

我从 Google 的联系人导出功能中获得了一个 vcf 文件。它是用 UTF-8 编码的,但我的 WinMobile 电话需要将 win1251 字符导入通讯录。我将其重新编码为 win1251 并尝试使用vObject库解析文件。结果我得到的是混合字段,其中一些被正确编码为 Unicode,而另一些被替换为“?????” 文本。例如,我包含了这样一个联系人的 prettyPrint:

 VCARD
    TEL: +7812000000
    params for  TEL:
       aKey TYPE [u'CELL']
    TEL: +7921000000
    params for  TEL:
       aKey TYPE [u'HOME']
    URL: http\://www.diamantstroy.spb.ru
    X-ABLABEL: _$!<HomePage>!$_
    N:  Alexei  ??????? 
    VERSION: 3.0
    ORG: [u'\u041e\u041e\u041e \u0414\u0438\u0430\u043c\u0430\u043d\u0442-\u0421\u0442\u0440\u043e\u0439-\u0421\u0435\u0440\u0432\u0438\u0441']
    FN: Alexei ???????

我在源代码中找不到一个地方,我应该应用某种编码()/解码()补丁来满足我的需要。有人可以帮助我吗?

4

1 回答 1

0

当您将输入传递给readOne(或您正在使用的任何解析函数)时,请确保您的输入是 unicode。如果您想回到 Windows-1251 编码,请在解析 vcard 后使用result.encode('cp1251')codecs.open(filename, 'w', 'cp1251').write(result).

您要通过的流程有点令人困惑。你在做phone -> google -> code,还是因为你使用了“期望”这个词,你在做google -> code -> phone吗?

这个答案可能有助于转换。

于 2015-05-02T14:32:58.577 回答