Разбор нескольких vCards с Python
У меня есть vcf-файл из функции экспорта контактов Google. Он был закодирован с помощью 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 ???????
Чего я не могу найти, так это места в исходном коде, где я должен применить какой-то патч encode()/decode() для своих нужд. Может ли кто-нибудь помочь мне?
1 ответ
Убедитесь, что ваш ввод Unicode, когда вы передаете его readOne
(или любую другую функцию синтаксического анализа, которую вы используете). Если вы хотите вернуться к кодировке Windows-1251, после разбора использования vcard result.encode('cp1251')
или же codecs.open(filename, 'w', 'cp1251').write(result)
,
Это немного сбивает с толку, через какой поток вы идете. Ты делаешь phone -> google -> code
или, так как вы используете слово ожидает, вы делаете google -> code -> phone
?
Этот ответ может помочь с конверсиями.