Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » вывод на печать содержимого QString [RSS Feed]

#1 Июль 16, 2012 10:05:46

keizer08
От:
Зарегистрирован: 2011-09-13
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

вывод на печать содержимого QString

Всем доброго времени суток.

Проблема в следующем. Имеем QString экземпляр внутри со строкой в юникоде. print jочень сильно сильно ругается когда ему на печать подсовываешь эту строчку вот так:

 UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
потому что по умолчанию использует ascii кодек.

Пробовал стрингать эту строчку встроеннйо функцией
srt()
но и она по умолчанию использует ascii кодек и ругается точно так же.

Пробовал указывать
str('экземпляр Qstring c юникодом внутри').decode('utf-8')
кодировку - все то де самое…

В общем у меня что то великий тупняк и никак не въеду. Моя цель вывести строку на печать print'ом

Вот мои эксперементы в IDLE:

>>> from PyQt4 import QtGui, QtCore
>>> text = QtCore.QString('Русский текст')
>>> print text
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    print text
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-13: ordinal not in range(128)
>>> print str(text).encode('utf-8')
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    print str(text).encode('utf-8')
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-13: ordinal not in range(128)
>>> print str(text).decode('utf-8')
Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    print str(text).decode('utf-8')
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-13: ordinal not in range(128)
>>> print text.toUtf8()
Русский текст

Как видим у QString есть метод toUtf8 после которого print не ругается но результат меня не устраивает :D


P.S. Пришел я сюда за помощью, а не собирать плевки в лицо ибо форумы и существуют для взаимопомощи. Если нечего сказать по существу лучше воздержитесь от ответа.



Отредактировано keizer08 (Июль 16, 2012 10:43:12)

Офлайн

#2 Июль 16, 2012 12:11:44

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

вывод на печать содержимого QString

>>> from PyQt4 import QtGui, QtCore
>>> text = QtCore.QString('Русский текст')
>>> print unicode(text)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\P26\lib\encodings\cp866.py", line 12, in encode
    return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-6: character maps to <undefined>
>>> print unicode(text,'cp866')
Русский текст
>>> text = QtCore.QString(u'Русский текст')
>>> print unicode(text)
Русский текст
1. Нужно узнать с какой кодировкой приходит текст, например консоль винды в основном cp866
2. Куда отправляете текст на печать, те какая требуется кодировка
3 …



Офлайн

#3 Июль 16, 2012 12:21:28

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

вывод на печать содержимого QString

>>> from PyQt4 import QtCore
>>> q=QtCore.QString(u'приведение')
>>> print unicode(q)
приведение
P.S. Linux, python 2.7.2

UPD ссори, долго писал - успели опередить. Не хотел дублировать ответ.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Отредактировано JOHN_16 (Июль 16, 2012 12:25:03)

Офлайн

#4 Июль 16, 2012 14:29:21

keizer08
От:
Зарегистрирован: 2011-09-13
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

вывод на печать содержимого QString

о… Спасибо добрые вы люди))) но вот проблема в том что текст поставляется как в консоль винды так и в консоль Linux, ПО кроссплатформенное, но это уже не важно =) В каком направлении двигаться теперь знаю.



Офлайн

  • Начало
  • » GUI
  • » вывод на печать содержимого QString[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version