Найти - Пользователи
Полная версия: Вопрос по Python 2.7.6
Начало » Python для новичков » Вопрос по Python 2.7.6
1 2
ohmyheap
Как при raise RuntimeError(“Неизвестное содержимое”) в Python 2.7.6 добиться корректного вывода кирилицы в консоль, если следующие варианты не работают:
1) raise RuntimeError(u“Неизвестное содержимое”)
2) raise RuntimeError(unicode(“Неизвестное содержимое”))
3) errorMsg = u“Неизвестное содержимое”
raise RuntimeError(errorMsg)
4) errorMsg = u“Неизвестное содержимое”
raise RuntimeError(unicode(errorMsg))
Что еще попробовать?
doza_and
:) вообще советую переходить на Lunix. В винде небольшая путаница с кодировками
пробуйте
u“Неизвестное содержимое” .encode("cp866")

В консоли используется кодировка 866 но если вы например выход перенаправите в файл то по умолчанию виндовые средства будут пытаться интерпретировать содержимое в cp1251. А для кодов на питоне и питонячи средства “любят” utf-8. Над всем этим еще надругается локаль вашего компьютера.
ohmyheap
#!/usr/bin/env python
# -*- coding: utf-8 -*-
f = open("test.txt")
line = f.readline()
while line:
    print line,
    line = f.readline()
f.close
Я, конечно, понимаю, что пример можно переписать в виде
#!/usr/bin/env python
# -*- coding: utf-8 -*-
for line in open("test.txt"):
    print line,
и я попробовал по разному и encode(“cp866”) и преобразовывать в юникод. Успеха не добился.
Подскажите еще и на данном примере. Спасибо. (и будет + в репу)

p.s. я бы и рад сбежать на линь, но скрипты под виндузового пользователя требуются.
ilnur
# coding: utf-8
# 1.txt - текстовый документ в кодировке cp1251
for i in open('1.txt'):
    # следующая команда напечатает иероглифы
    print i
    # следующая команда напечатает все корректно
    print i.decode('cp1251')
# все корректно
print u'ильнур'
# все корректно
raise RuntimeError(u'Неизвестное содержимое'.encode('cp866'))

Microsoft Windows [Version 6.1.7601]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.
C:\Users\ilnurgi>cd c:\
c:\>python test1.py
яЁштхЄ
привет
ьшЁ
мир
ильнур
Traceback (most recent call last):
  File "test1.py", line 16, in <module>
    raise RuntimeError(u'╨Э╨╡╨╕╨╖╨▓╨╡╤Б╤В╨╜╨╛╨╡ ╤Б╨╛╨┤╨╡╤А╨╢╨╕╨╝╨╛╨╡'.encode('cp
866'))
RuntimeError: Неизвестное содержимое
c:\>
ohmyheap
Спасиб, ребят. Всем дал + в репу.
Singularitty
ohmyheap
Всем дал в репу.
а ты дерзкий
ohmyheap
Singularitty
а ты дерзкий
а ты шутник местный?
Singularitty
ohmyheapога
ohmyheap
Singularitty
ohmyheapога
рад за тебя
p.s. давайте не будем разводить флуд в теме.
ohmyheap
Мб кто подскажет, как правильно крутить
raw_input("Введите строку: ")
чтобы не лезли кракозябры.
Про конструкцию
import sys
sys.stdout.write("Введите строку: ")
sys.stdin.readline()
знаю, хотелось уточнить именно про raw_input(), т.к. как не извращался с encode() и decode() что т не получилось да и примеры с гугла не очень то помогают
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