gpt4 book ai didi

python - 如何在wxpython中传递字符'素数?

转载 作者:行者123 更新时间:2023-11-29 14:00:49 25 4
gpt4 key购买 nike

当我尝试通过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())))

最佳答案

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

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

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

str() 尝试使用默认编码(ascii)将其转换为字符串。 Ascii 只能表示 128 个字符。质数字符“′”不以 ascii 表示。这就是您出现此错误的原因。

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

那么你应该能够做到:

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

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

关于python - 如何在wxpython中传递字符'素数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15097922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com