我有一个来自谷歌联系人导出功能的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
吗?
这个答案可能有助于转换。