用Python解析多个vCard



我有一个来自谷歌联系人导出功能的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'u041eu041eu041e u0414u0438u0430u043cu0430u043du0442-u0421u0442u0440u043eu0439-u0421u0435u0440u0432u0438u0441']
    FN: Alexei ???????

我在源代码中找不到一个地方,我应该在那里应用某种encode((/decode((补丁来满足我的需求。有人能帮我吗?

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

你正在经历的流动有点令人困惑。你在做phone -> google -> code吗,或者因为你用了expects这个词,你在做google -> code -> phone吗?

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

最新更新