用于mysql数据库的python3编码

时间:2017-09-05 18:47:57

标签: python mysql json python-3.x character-encoding

  • 我提出了一个请求,以json utf-8(带有tupels的dict)作出回应。
  • 我想将json-response插入到mysql数据库中。
  • 我使用string.encode('utf-8')对字符串进行编码,但是以UTF-8编码的数据库也不会插入正确的值。

如果没有string.encode('utf-8'),我将得到一个UnicodeEncodeError,所以看来这对编码字符串是必要的

UnicodeEncodeError: 'ascii' codec can't encode character '\xfc' in position 147: ordinal not in range(128)

我举了一个例子:

    json中的
  • 字符串:'quälend'
  • 编码后的
  • 字符串:'qu \ xC3 \ xA4lend'
  • 插入数据库:'quälend'

我的猜测是,该数据库处理编码的utf-8字符串仍然是latin-1,但是当我插入一些未编码的样本utf-8字符串时,它就可以工作了。因此,数据库可以正确处理它,但不能使用编码的字符串。

你知道问题可能是什么吗?从几小时开始,我对这个问题感到失望。任何提示都受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

不要使用任何编码/解码功能;只会让事情变得更糟。

在UTF-8(MySQL的ä utf8或utf8mb4)中,

C3A4正确CHARACTER SET

ä是“Mojibake”。搜索http://stackoverflow.com/questions/38363566/trouble-with-utf8-characters-what-i-see-is-not-what-i-stored,了解导致该问题的原因以及您需要做些什么来避免它。

目前还不清楚“ascii”和“latin-1”在哪里参与其中;避免他们。 FC的{​​{1}}为latin1。

更多python笔记:http://mysql.rjweb.org/doc.php/charcoll#python