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)
我举了一个例子:
我的猜测是,该数据库处理编码的utf-8字符串仍然是latin-1,但是当我插入一些未编码的样本utf-8字符串时,它就可以工作了。因此,数据库可以正确处理它,但不能使用编码的字符串。
你知道问题可能是什么吗?从几小时开始,我对这个问题感到失望。任何提示都受到高度赞赏。
答案 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。