oai*_*mac 4 python qstring pyqt
我没有设法简单地打印包含特殊字符的QString变量.
我总是得到一个UnicodeEncodeError:
'ascii'编解码器无法对字符进行编码....
这是我尝试过的代码没有成功:
var1 = "éé" #idem with u"éé"
var2 = QString (var1)
print var2
--->>> UnicodeEncodeError
print str(var2)
--->>> UnicodeEncoreError
var3 = QString.fromLocal8Bit (var1) #idem with fromLatin1 and fromUtf8
print var3
--->>> UnicodeEncodeError
codec = QTextCodec.codecForName ("UTF-8") #idem with ISO 8859-1
var4 = codec.toUnicode (var2.toUtf8().data()) #idem with toLatin1 instead of toUtf8
print var4
--->>> UnicodeEncodeError
Run Code Online (Sandbox Code Playgroud)
我也试过用:
QTextCodec.setCodecForCStrings(QTextCodec.codecForName("UTF-8"))
Run Code Online (Sandbox Code Playgroud)
我真的需要打印一个QString变量,而不是QByteArray或其他对象.
它对我有用toUtf8():
>>> s = u'éé'
>>> qs = QString(s)
>>> qs
PyQt4.QtCore.QString(u'\xe9\xe9')
>>> print qs
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
>>> print qs.toUtf8()
éé
>>>
Run Code Online (Sandbox Code Playgroud)
您的内部数据应该是Unicode,因此您应该使用u'éé'而不是'éé'按照您在问题中所说的那样使用.你的评论甚至说u'éé'.
更新:抱歉,str()除非您使用特定的编码,否则无法保证打印或在Unicode上使用Unicode对象.打印流接受字节数组/字节串,而Unicode对象上的str()实际上是在尝试将Unicode转换为字节数组/字节串.你无法避免字节数组!
| 归档时间: |
|
| 查看次数: |
9885 次 |
| 最近记录: |