2013-03-07 82 views
3

我有一個來自Google的聯繫人導出功能的vcf文件。 它用UTF-8編碼,但我的WinMobile電話預計win1251字符導入聯繫人。 我將它重新編碼到win1251中,並嘗試使用vObject庫解析文件。 我得到的結果是一些字段的組合被正確編碼爲Unicode,有些被替換爲「?????」文本。 例如,我有這樣的接觸的prettyPrint:用Python解析多個電子名片

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 ??????? 

我找不到在源代碼的地方,我應該使用某種形式的編碼()/解碼()補丁的適合我的需要。 有人可以幫我嗎?

+0

這是有點混淆你正在通過什麼流程。你正在做手機 - >谷歌 - >代碼,或者因爲你使用的字預計,你在做谷歌 - >代碼 - >手機? – tmthydvnprt 2015-05-05 02:41:27

回答

0

當您將其傳遞給readOne(或您正在使用的任何解析函數)時,請確保您的輸入是unicode。如果您想回到Windows-1251編碼,請在解析電子卡片後使用result.encode('cp1251')codecs.open(filename, 'w', 'cp1251').write(result)

這是一個有點令人困惑的流程,你要通過。你在做phone -> google -> code, 或自你使用expects這個詞, 你在做google -> code -> phone

answer可能有助於轉換。