Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > Помогиде разобраться с кодировкой


Автор: Burka 5.2.2017, 18:21
Привет, я не могу разобраться как правильно декодировать следующуе строки
Программа получает вывод из subprocess, для примера комманда "netstat -a" возвращает следующие строки

Цитата

['', '\x80\xaa\xe2\xa8\xa2\xad\xeb\xa5 \xaf\xae\xa4\xaa\xab\xee\xe7\xa5\xad\xa8\xef', '', '\x88\xac\xef    \x8b\xae\xaa\xa0\xab\xec\xad\xeb\xa9 \xa0\xa4\xe0\xa5\xe1        \x82\xad\xa5\xe8\xad\xa8\xa9 \xa0\xa4\xe0\xa5\xe1          \x91\xae\xe1\xe2\xae\xef\xad\xa8\xa5']


Подскажите как правильно их декодировать чтобы вывести русский язык. Я перепробовал разные варианты, но каждый раз какая то ошибка с декодировкой символов.

Автор: Burka 5.2.2017, 18:55
вот пример кода который не работает, 

Код

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

print "Start1"

lines = subprocess.Popen(["netstat", "-a"], stdout=subprocess.PIPE, universal_newlines=True)

print "wait"

for l in lines.stdout:
    print l
    print "encoding:  ",
    print l.encode("utf-8")


print "Done"


Цитата

return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0x80 in position 0: invalid start byte


Автор: Romikgy 5.2.2017, 19:00
и какая ошибка возникает?

Автор: Burka 5.2.2017, 21:57
Цитата

return codecs.utf_8_decode(input, errors, True)
UnicodeD
ecodeError: 'utf8' codec can't decode byte 0x80 in position 0: invalid start byte

Автор: Romikgy 6.2.2017, 10:24
Код

for l in lines.stdout:
    print l
    print "encoding:  ",
    print l.decode('866').encode("utf-8")

Автор: Burka 6.2.2017, 15:54
Спасибо, работает

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)