Найти - Пользователи
Полная версия: Нестандартный случай с кодировками!
Начало » Python для новичков » Нестандартный случай с кодировками!
1
AliasNameless
Доброго времени суток!
Есть одна вредная консольная программа программа, которая работает через 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
pyuser
попробуйте
out.decode('raw-unicode-escape').encode("utf-8")
AliasNameless
Спасибо, работает!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB