Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 18, 2010 21:47:33

AliasNameless
От:
Зарегистрирован: 2010-09-15
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Нестандартный случай с кодировками!

Доброго времени суток!
Есть одна вредная консольная программа программа, которая работает через subprocess.Popen
Результат в stdout имеет странный вид: с одной стороны это юникод с кириллическими символоми вида \u0424, с другой стороны type() говорит что это обычная (не юникод) строка. В соответствии с этим encode сроку не меняет. Выглядет это так:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import subprocess

proc = subprocess.Popen("google picasa list-albums --fields title",shell=True, stdout = subprocess.PIPE, stdin = subprocess.PIPE, stderr = subprocess.PIPE)
out,err = proc.communicate()

print "Содержимое строки:", out[0:50]
print "Это не юникод!", type(out)
print "Не работатет (((", out[0:50].encode("utf-8")
В консоле видим
$ ./test
Содержимое строки: Mars
\u0424\u0435\u043e\u0434\u043e\u0441\u0438\u0
Это не юникод! <type 'str'>
Не работатет ((( Mars
\u0424\u0435\u043e\u0434\u043e\u0441\u0438\u0
Можно ли буз бубнов и великов это как то поправить?
Заранее спс.

P.S. ось линукс, кодировка консоли utf-8



Отредактировано (Окт. 18, 2010 21:48:56)

Офлайн

#2 Окт. 19, 2010 06:27:57

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

Нестандартный случай с кодировками!

попробуйте

out.decode('raw-unicode-escape').encode("utf-8")



Офлайн

#3 Окт. 19, 2010 18:22:08

AliasNameless
От:
Зарегистрирован: 2010-09-15
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Нестандартный случай с кодировками!

Спасибо, работает!



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version