如何在Python中编码(utf8mb4)

用户3781236

如何在Python中的ut8mb4中编码内容?

我有两组数据:正在从Parse迁移到新的MySQL数据库的数据,以及向前传输的数据(仅与新数据库通信)。我的数据库是utf8mb4,用于存储表情符号和带重音的字母。

当我使用python脚本时,第一组数据只能正确显示(当涉及表情符号和重音符号时):

MySQLdb.escape_string(unicode(xstr(data.get('message'))).encode('utf-8')) 

并且在PHP中从MySQL数据库读取时:

$row["message"] = utf8_encode($row["message"]);

当我不包括该utf8_encode($row["message"])部分时,第二组数据仅能正确显示(涉及表情符号和重音时)我正在尝试协调这些数据,以便将两组数据正确返回给我的iOS应用。请帮忙!

马丁·彼得斯(Martijn Pieters)

MySQL的utf8mb4编码只是标准的UTF-8

但是,他们必须添加该名称,以使其与仅支持BMP字符损坏的UTF-8字符集区分开

换句话说,从Python方面来说,与MySQL对话时,您应该始终编码为UTF-8,但要考虑到数据库可能无法处理U + FFFF以外的Unicode代码点,除非您utf8mb4 在MySQL方面使用

但是,一般而言,您要避免手动编码和解码,而不必为此MySQLdb担心。为此,您可以配置连接和排序规则以透明地处理Unicode文本。对于MySQLdb,这意味着需要设置charset='utf8mb4'

database = MySQLdb.connect(
    host=hostname,
    user=username,
    passwd=password,
    db=databasename,
    charset="utf8mb4"
)

然后使用普通的Python 3str字符串;use_unicode选项设置为默认值True*

注意:这会为您处理SET NAMESSET character_set_connection,因此无需手动发布。


*除非您仍然使用Python 2,否则默认值为False将其设置为True并使用u'...'unicode字符串。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章