use*_*236 8 python mysql encoding utf-8
如何在Python中用ut8mb4编码?
我有两组数据:数据我将从Parse迁移到我的新MySQL数据库,而数据将继续(仅与我的新数据库对话).我的数据库是utf8mb4,以存储表情符号和重音字母.
当我在python脚本中时,第一组数据只显示正确(当涉及表情符号和重音符号时):
MySQLdb.escape_string(unicode(xstr(data.get('message'))).encode('utf-8'))
Run Code Online (Sandbox Code Playgroud)
当从PHP中读取MySQL数据库时:
$row["message"] = utf8_encode($row["message"]);
Run Code Online (Sandbox Code Playgroud)
当我不包括该utf8_encode($row["message"])部分时,第二组数据仅正确显示(当涉及表情符号和重音时).我正在尝试协调这些,以便将两组数据正确地返回到我的iOS应用程序.请帮忙!
Tom*_*yen 24
为了表情符号和超出U + FFFF代码点的其他字符,我在Python和MySQL之间正确交换了全系列的UTF-8字符,我一直在努力.
为了确保一切正常,我必须做以下事情:
utf8mb4用于CHAR,VARCHAR以及TEXT在MySQL列要在Python中强制执行UTF-8,请将以下行添加为Python脚本的第一行或第二行:
# -*- coding: utf-8 -*-
Run Code Online (Sandbox Code Playgroud)
要在Python和MySQL之间强制执行UTF-8,请按如下方式设置MySQL连接:
# Connect to mysql.
dbc = MySQLdb.connect(host='###', user='###', passwd='###', db='###', use_unicode=True)
# Create a cursor.
cursor = dbc.cursor()
# Enforce UTF-8 for the connection.
cursor.execute('SET NAMES utf8mb4')
cursor.execute("SET CHARACTER SET utf8mb4")
cursor.execute("SET character_set_connection=utf8mb4")
# Do database stuff.
# Commit data.
dbc.commit()
# Close cursor and connection.
cursor.close()
dbc.close()
Run Code Online (Sandbox Code Playgroud)
这样,您就不需要使用诸如encode和之类的函数utf8_encode.
Mar*_*ers 17
MySQL的utf8mb4编码是只是标准的UTF-8 .
他们必须添加该名称,以区别于仅支持BMP字符的损坏的 UTF-8字符集.
换句话说,在与MySQL交谈时应始终编码为UTF-8,但要考虑到数据库可能无法处理超出U + FFFF的Unicode代码点,除非您utf8mb4 在MySQL端使用.
一般来说,您希望避免手动编码和解码.配置连接和排序规则以便为您处理Unicode.因为MySQLdb,这意味着设置charset='utf8'(设置use_unicode=True和处理SET NAMES和SET character_set_connection),然后将Python端的所有文本作为Unicode文本处理.
| 归档时间: |
|
| 查看次数: |
15940 次 |
| 最近记录: |