Разбор нескольких 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?

Этот ответ может помочь с конверсиями.

Другие вопросы по тегам