MySQL在Python中:UnicodeEncodeError: 'ascii'错误

3

你好,我正在尝试将一个字符串值存储到MySQL中,并使用db.escape_string()函数来避免转义特殊字符。这个字符串是:

Lala*=#&%@<>_?!:;-'"/()¥¡¿

但是当我尝试运行代码时,我遇到了这个错误:

UnicodeEncodeError: 'ascii'编解码器无法对位置在23-25的字符进行编码:序数不在128的范围内

我应该怎么办?

3个回答

0

尝试使用http://pypi.python.org/pypi/Unidecode/0.04.1

例如:

from unidecode import unidecode

your_string = 'Lala*=#&%@<>_?!:;-\'"/()¥¡¿'
unidecode(your_string)

请注意,我已经在您的字符串中转义了字符',以避免SyntaxError错误。

0

在运行脚本之前,我在Debian中使用以下bash命令解决了问题:

export PYTHONIOENCODING=utf-8

从这里借鉴:https://github.com/trac-hacks/tracsql/issues/3 - Ehsan88

-2
错误提示说这里有一些不存在于ASCII中的字符(它们是Unicode)。尝试使用:
newStr = u'Lala*=#&%@<>_?!:;-'"/()¥¡¿'

需要使用Unicode进行声明,使用u'某些内容'。
这在大多数Python shells中可能无法正常工作,因此请确保您的IDE支持Unicode,并且您正在使用的文件在顶部有一个Unicode声明。


如果字符串存储在另一个无法编辑的变量中怎么办?例如:字符串已经存储在STR中,我该如何添加u? - weyhei
STR.decode('utf-8') 将会把它转换为一个具有正确编码的 unicode 对象。 - Brigand
尝试了一下,但出现了另一个错误: 文件“/usr/lib/python2.7/encodings/utf_8.py”,第16行,在解码时出错 返回codecs.utf_8_decode(input, errors, True) UnicodeEncodeError: 'ascii' codec can't encode characters in position 23-25: ordinal not in range(128) - weyhei
1
@weyhei 我认为你应该进行编码。STR = STR.encode('utf8') - vikki
如果您想澄清正在询问什么,请访问此处:http://stackoverflow.com/questions/9331010/mysql-in-python-encoding - weyhei

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接