【发布时间】:2018-05-12 17:43:07
【问题描述】:
我正在尝试将希伯来语存储在 MySQL 表中 - 但我最终看到了问号。 我正在使用 Python 烧瓶服务器。 我相信字符集和排序规则设置正确(这是运行“显示创建表”的输出:
创建表
some_table(some_fieldvarchar(128) 整理 utf8mb4_unicode_ci DEFAULT NULL) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
我的 SQLALCHEMY_DATABASE_URI 是:
'mysql://username:password@localhost/database?charset=utf8'
我插入到表中的数据最初是在 Python 视图函数中接收的,我对其进行如下处理:
data = request.get_json()
some_field = data['some_field'].encode('utf-8')
然后我将“some_field”对象插入到 some_field 列中。
注意:当我尝试将 some_field 变量打印到 Python 控制台时,我还看到了一个乱码字符串,但我认为这是因为控制台本身无法显示希伯来语(不确定这是否会导致问题)...
【问题讨论】:
-
@Amadan 我打印出来并得到“5e9:5dc:5d5:5dd”,这是正确的。它是 Python2,感谢您指出这一点。传出 Web 请求的编码设置为 utf-8。而且...在连接字符串中使用 utf8mb4 也不起作用,它会导致错误:/
-
您在插入数据库之前得到了
5e9:5dc:5d5:5dd?从数据库中读取后你得到了什么?你怎么插入?以及如何检索? -
@Amadan 我将传入数据读为“data = request.get_json()”。当我执行“打印数据”时,我看到 {u'some_field': u'\u05e9\u05dc\u05d5\u05dd'}。但是,如果我尝试“打印数据 ['some_field']”,我会看到乱码。我使用 SQLALCHEMY 插入数据,我尝试直接插入 data['some_field'],以及在应用 decode('utf-8) 和/或 encode('utf-8') 后插入它
-
你不是说,把数据从数据库里取出来,你会得到什么? (十六进制转储,所以我们不会陷入猜测胡言乱语:))
标签: mysql flask utf-8 python-2.x hebrew