如何在wxpython中传递字符'prime?

时间:2013-02-26 19:46:55

标签: python mysql unicode character

当我尝试通过wx.python Textctrl插入此文本2′BR info MySql时,它给了我这样的错误:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128).

问题在于字符,我试过encode('utf8')仍然无效。当我手动将其插入MySql时,我查询它显示为2?BR。这是插入代码。感谢。

cur.execute("INSERT INTO TKtable (title) VALUES (%s)", (str(self.Text.GetValue())))

1 个答案:

答案 0 :(得分:0)

我假设你在Python 2(不是Python 3)下使用wxPython的unicode版本。

当您在str的结果上调用self.Text.GetValue()构造函数时,会出现问题。

wxPython接受所有类型的字符并返回unicode字符串。在您的示例中,Textctrl.GetValue()返回unicode字符串u"2′BR"

str()尝试使用默认编码将其转换为字符串,即ascii。 Ascii只能代表128个字符。主要字符“'”未在ascii中表示。这就是你有这个错误的原因。

MySQL数据库的编码是什么?如果你想使用像''“prime这样的奇怪字符,你应该将你的数据库编码设置为utf-8。

然后你应该能够做到:

cur.execute("INSERT INTO TKtable (title) VALUES (%s)", (self.Text.GetValue(),))

您将无法成功插入数据库编码中不存在的字符。 我认为素数“'”(utf-8中的代码2032)素数甚至不存在于拉丁语-1中。