Найти - Пользователи
Полная версия: проблемы с кодировкой
Начало » Python для новичков » проблемы с кодировкой
1
alexeyche
Без лишних слов:
>>> sys.getdefaultencoding()
'ascii'
>>> print sys.stdout.encoding
US-ASCII
>>> type(s)
<type 'str'>
>>> s
'\xd0\xb0\xd1\x84\xd1\x8b\xd0\xb2\xd0\xb0\xd0\xb2\xd1\x8b'
>>> str(s)
'\xd0\xb0\xd1\x84\xd1\x8b\xd0\xb2\xd0\xb0\xd0\xb2\xd1\x8b'
>>> print s
афывавы
encode decode из utf-8/ascii туда сюда даёт только ошибки, а с replace'ами выдают пустую строку
как выйти из ситуации понятия не имею, уже думаю делать мегакостыль в виде класса с методом write чтобы можно было перенаправить вывод print'а.
Спасите от костыля и быдлокодинга!

Python 2.6.4, строчка грузиться как CGI параметр
buddha
вопрос не понятен, чего хочешь? из какой ситуации? print же выводит текст
alexeyche
Вопрос собственно в переводе такого набора байтов в строку (unicode).
>>> str(s)
u'афывавы'
или
>>> repr(s)
u'афывавы'
Все мои попытки приходили к этому:
>>> s.decode('utf-8')
u'\u0430\u0444\u044b\u0432\u0430\u0432\u044b'
>>> print s.decode('utf-8')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-6: ordinal not in range(128)
asilyator
s.decode('utf-8')
print s

Универсальный костыль:
import codecs, sys
sys.stdout = codecs.getwriter('utf8')(sys.stdout)
alexeyche
не помогло
>>> sys.stdout = codecs.getwriter('US_ASCII')(sys.stdout)
>>> print s.decode('utf-8')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.6/codecs.py", line 351, in write
    data, consumed = self.encode(object, self.errors)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-6: ordinal not in range(128)
>>> print s
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.6/codecs.py", line 351, in write
    data, consumed = self.encode(object, self.errors)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)
перестало печататься вообще
asilyator
Какой тип у s?
codecs.getwriter('utf8'), а не аски.
tiestoiswin
здравствуйте ребята ! помогите новичку одним вопросом плиз, есть один сайт и я туда должен писать сообщение разные, среди букв в сообщении иногда должны быть и символы разные, но этот сайт не читает эти символы а читает его html код, то есть вместо символа пишется его html код. есть возможность это исправить, по моему сайт читает только латинские и русские буквы, можно как нибудь изменит кодировку символа чтобы сайт читал нормально символы или еще что нить, сайт работает на UTF-8, Буду очень благодарен, жду ответа
Андрей Светлов

Ничегонельзяпонять!

Новая проблема — новая тема!

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