Уведомления

Группа в Telegram: @pythonsu

#1 Май 21, 2012 15:09:49

alexeyche
Зарегистрирован: 2012-05-21
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

проблемы с кодировкой

Без лишних слов:

>>> 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 параметр

Отредактировано alexeyche (Май 21, 2012 15:13:01)

Офлайн

#2 Май 21, 2012 15:58:39

buddha
От:
Зарегистрирован: 2012-03-02
Сообщения: 422
Репутация: +  15  -
Профиль   Отправить e-mail  

проблемы с кодировкой

вопрос не понятен, чего хочешь? из какой ситуации? print же выводит текст

Офлайн

#3 Май 21, 2012 16:51:39

alexeyche
Зарегистрирован: 2012-05-21
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

проблемы с кодировкой

Вопрос собственно в переводе такого набора байтов в строку (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)

Отредактировано alexeyche (Май 21, 2012 16:59:54)

Офлайн

#4 Май 21, 2012 17:13:03

asilyator
От:
Зарегистрирован: 2010-10-24
Сообщения: 276
Репутация: +  -2  -
Профиль   Отправить e-mail  

проблемы с кодировкой

s.decode('utf-8')
print s

Универсальный костыль:
import codecs, sys
sys.stdout = codecs.getwriter('utf8')(sys.stdout)



Отредактировано asilyator (Май 21, 2012 17:15:08)

Офлайн

#5 Май 21, 2012 17:41:43

alexeyche
Зарегистрирован: 2012-05-21
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

проблемы с кодировкой

не помогло

>>> 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)
перестало печататься вообще

Отредактировано alexeyche (Май 21, 2012 17:44:28)

Офлайн

#6 Май 21, 2012 17:50:49

asilyator
От:
Зарегистрирован: 2010-10-24
Сообщения: 276
Репутация: +  -2  -
Профиль   Отправить e-mail  

проблемы с кодировкой

Какой тип у s?
codecs.getwriter('utf8'), а не аски.



Офлайн

#7 Май 22, 2012 14:32:09

tiestoiswin
Зарегистрирован: 2012-05-22
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

проблемы с кодировкой

здравствуйте ребята ! помогите новичку одним вопросом плиз, есть один сайт и я туда должен писать сообщение разные, среди букв в сообщении иногда должны быть и символы разные, но этот сайт не читает эти символы а читает его html код, то есть вместо символа пишется его html код. есть возможность это исправить, по моему сайт читает только латинские и русские буквы, можно как нибудь изменит кодировку символа чтобы сайт читал нормально символы или еще что нить, сайт работает на UTF-8, Буду очень благодарен, жду ответа

Офлайн

#8 Май 22, 2012 14:48:16

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

проблемы с кодировкой

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

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



Отредактировано Андрей Светлов (Май 22, 2012 14:48:27)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version