gpt4 book ai didi

python - 如何将来自 Web 服务的重音字符存储到数据库中?

转载 作者:可可西里 更新时间:2023-11-01 07:29:22 25 4
gpt4 key购买 nike

我通过网络服务获取了以下单词:André

在 Python 中,该值类似于:“Andr\u00c3\u00a9”。然后使用 json.loads 解码输入:

>>> import json
>>> json.loads('{"name":"Andr\\u00c3\\u00a9"}')
>>> {u'name': u'Andr\xc3\xa9'}

当我将以上内容存储在 utf8 MySQL 数据库中时,使用 Django 存储数据如下所示:

SomeObject.objects.create(name=u'Andr\xc3\xa9')

从 mysql shell 查询名称列或在网页中显示它给出:André

网页以utf8格式显示:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

我的数据库是用utf8配置的:

mysql> SHOW VARIABLES LIKE 'collation%';
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_unicode_ci |
| collation_server | utf8_unicode_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)

mysql> SHOW VARIABLES LIKE 'character_set%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

如何从 Web 服务中检索单词 André,将其正确存储在数据库中而不丢失数据,并以其原始形式显示在网页上?

最佳答案

错误已经存在于您传递给 json.loads() 的字符串中。\u00c3 是“波浪号”,\00a9 是版权标志。 é 的正确格式是\u00e9。

可能该字符串已由发送方以 UTF-8 编码并由接收方解码为 ISO-8859-1。

例如,如果您运行以下 Python 脚本:

# -*- encoding: utf-8 -*-

import json

data = {'name': u'André'}
print('data: {0}'.format(repr(data)))

code = json.dumps(data)
print('code: {0}'.format(repr(code)))

conv = json.loads(code)
print('conv: {0}'.format(repr(conv)))

name = conv['name']
print(u'Name is {0}'.format(name))

输出应该是这样的:

data: {'name': u'Andr\xe9'}
code: '{"name": "Andr\\u00e9"}'
conv: {u'name': u'Andr\xe9'}
Name is André

在 Python 2.x 中管理 unicode 有时会变得很麻烦。不幸的是,Django 还不支持 Python 3。

关于python - 如何将来自 Web 服务的重音字符存储到数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2775751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com