mysql 5.5 utf-8排序规则utf8\U unicode\U ci,pymysql

mysql 5.5 utf-8排序规则utf8\U unicode\U ci,pymysql,mysql,utf-8,pymysql,Mysql,Utf 8,Pymysql,我对OSX上的mysql 5.5有一个问题。我在做一个多语言项目 并使用MyISAM表。默认字符集为utf-8,默认排序规则为utf8\U unicode\U ci 意大利语和德语不错,但西班牙语不行。我使用python来处理数据, pymysql驱动程序,字符集选项为utf-8,unicode为true 实际上,所有具体的西班牙语字母都是一团糟 从python shell: >>>r >>>['Blas P\xc3\xa9rez Gonz\xc3\xa1le

我对OSX上的mysql 5.5有一个问题。我在做一个多语言项目 并使用MyISAM表。默认字符集为utf-8,默认排序规则为utf8\U unicode\U ci

意大利语和德语不错,但西班牙语不行。我使用python来处理数据, pymysql驱动程序,字符集选项为utf-8,unicode为true

实际上,所有具体的西班牙语字母都是一团糟

从python shell:

>>>r
>>>['Blas P\xc3\xa9rez Gonz\xc3\xa1lez, 4']
>>>print[0]
>>>Blas Pérez González, 4
after saving it to database and fetching it again:
>>>r
>>>(u'Blas P\xc3\xa9rez Gonz\xc3\xa1lez, 4')
>>>print r[0]
>>>Blas Pérez González, 4
我真的很困惑,它显然是同一个unicode字符串


谢谢。

最好使用java风格的unicode转义,比如

u'\\u0e4f\\u032f\\u0361\\u0e4f'.decode('unicode-escape')

这确保字符串中有unicode

然后是实际的问题:在mysql中尝试
描述_表
。还是在一个可以设置角色集的地方。试试看你的桌子是否正常


用于测试:在数据库中存储
u'Blas p\\u00e9rez Gonz\\u00e1lez'。解码('unicode-escape')
。 然后您就知道存储了正确的unicode字符串。
如果数据库有正确的db/表/字段定义,则只有检索(而不是存储)可能有故障。

为什么第一个字符串前面没有“u”(作为第二个字符串?)谢谢您的回答,但更详细的解释将帮助我理解:)请进一步解释。在我能够首先解码当前格式之前,我无法以任何其他格式对字符串进行编码。好吧,非常感谢,这似乎是个问题,至少用java风格的unicode保存字符串并再次检索它将以正确的方式显示:u'Blas P\xe9rez Gonz\xe1lez',没有使用java风格的是u'Blas P\xc3\xa9rez Gonz\xc3\xa1lez,4'。我现在的问题是如何从数据库中检索所有错误的记录,将其转换为java风格并再次保存。我在谷歌上搜索了一段时间,不幸的是没有成功什么让我感到困惑:打印'Blas P\xc3\xa9rez Gonz\xc3\xa1lez,4'它会正确显示,但是打印u'Blas P\xc3\xa9rez Gonz\xc3\xa1lez,4'不是并且如果键入unicode(u'Blas Pérez González')。编码('utf-8'))返回'Blas P\xc3\xa9rez Gonz\xc3\xa1lez'我想它的编码不正确,为什么?编辑/显示的字符(
é
)取决于编辑器/查看器/平台的编码。不幸的是,我目前只有一个UTF-8系统,没有Python编码经验。看见