палочка python 2.7: UnicodeDecodeError: (ошибка в get_font_metrics)

Я получаю эту ошибку «UnicodeDecodeError: кодек ascii не может декодировать байт 0xc3 в позиции 17: порядковый номер не в диапазоне (128)», когда я пытаюсь объединить это изображение «La Pocatière.png».

    Python 2.7.11
    bg_img = Image(filename='C:/Pocatière.png')
    bg_img.resize(1200,628)
    bg_img.composite('C:/test.png', left=0, top=0)

когда я печатаю, я вижу правильный юникод:

bg_img
u'La Pocati\xe8re.png'
>>> print bg_img
La Pocatière.png

Не знаете, как обойти эту проблему?


Ответ: После проведения большого количества исследований и обсуждения с моим коллегой мы смогли решить эту проблему, установив: text_encoding = 'utf-8'. По какой-то причине wand не смог установить его автоматически.


person mrzoogle    schedule 06.06.2016    source источник
comment
Это питон v2 или v3? как и в v2, вам может быть лучше вызвать Image(filename=u'C:/Pocatière.png'), вы также можете заметить это в рабочем образце, где указано u'La Pocati\xe8re.png'   -  person Dilettant    schedule 06.06.2016
comment
Ссылка, предоставленная @l'L'l, определенно полезна ;-), но я подозреваю, что здесь проблема заключается в строковом литерале в качестве параметра функции. Надеюсь, ОП расскажет...   -  person Dilettant    schedule 06.06.2016
comment
@Dilettant, поскольку в коде есть строки unicode и print bg_img, я был бы удивлен, если бы это был Python 3. Или я упустил что-то очевидное?   -  person Andras Deak    schedule 18.06.2016
comment
@AndrasDeak Это питон 2.7   -  person mrzoogle    schedule 20.06.2016


Ответы (1)


Это питон v2 или v3?

В случае, если это Python версии 2 (как я думаю), вам может быть лучше позвонить

Image(filename=u'C:/Pocatière.png') 

вы также можете заметить это в рабочем образце, где указано

u'La Pocati\xe8re.png'
person Dilettant    schedule 06.06.2016
comment
Спасибо за совет. Я получаю путь к файлу как переменную. Как бы я поступил в этом случае. bg_url = background_img_path+"/"+background_img.decode('utf-8') bg_img = Image(filename=bg_url) bg_img.resize(1200,628) bg_img.composite(fg_url, left=0, top=0) - person mrzoogle; 07.06.2016
comment
Если я удаляю .decode('utf-8') из кода, я получаю следующую ошибку: BlobError: невозможно открыть изображение `C:/La Pocati.png': Нет такого файла или каталога @ error/blob.c/ ОпенБлоб/2702 - person mrzoogle; 07.06.2016
comment
Это питон v2 или v3? Хорошо бы знать. В вашем образце (комментарий выше) для python v2 у вас будет bg_url строка байтов (информация потеряна) из-за того, что вы не используете метод os.path, а вводите "/" вместо u"/", верно? Затем параметр имени файла снова получит строку байтов вместо (я думаю) ожидаемой строки юникода. Итак, учитывая, что background_img_path и background_img также являются строками Юникода, почему бы не использовать: bg_url = background_img_path+u"/"+background_img или подобное? - person Dilettant; 07.06.2016
comment
это python v2.7, я пробовал bg_url = background_img_path+u"/"+background_img, но все равно получаю то же сообщение об ошибке. BlobError :( Думаете, проблема bg_url = background_img_path+"/"+background_img.decode('utf-8') в этом коде? - person mrzoogle; 07.06.2016
comment
также background_img_path отправляется через форму background_img_path = request.form.get("imgpath") Я исправил это / в шаблоне jinja, так что теперь у меня есть это bg_url = background_img_path+background_img Пробовал это тоже безуспешно os.path.join(background_img_path, background_img) - person mrzoogle; 07.06.2016