Найти - Пользователи
Полная версия: вывод на печать содержимого QString
Начало » GUI » вывод на печать содержимого QString
1
keizer08
Всем доброго времени суток.

Проблема в следующем. Имеем 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. Пришел я сюда за помощью, а не собирать плевки в лицо ибо форумы и существуют для взаимопомощи. Если нечего сказать по существу лучше воздержитесь от ответа.
sp3
>>> 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 …
JOHN_16
>>> from PyQt4 import QtCore
>>> q=QtCore.QString(u'приведение')
>>> print unicode(q)
приведение
P.S. Linux, python 2.7.2

UPD ссори, долго писал - успели опередить. Не хотел дублировать ответ.
keizer08
о… Спасибо добрые вы люди))) но вот проблема в том что текст поставляется как в консоль винды так и в консоль Linux, ПО кроссплатформенное, но это уже не важно =) В каком направлении двигаться теперь знаю.
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