У меня есть следующее слово, которое я получаю через веб-сервис: Андре
В Python значение выглядит так: "Andr \ u00c3 \ u00a9". Затем ввод декодируется с использованием json.loads
:
>>> import json
>>> json.loads('{"name":"Andr\\u00c3\\u00a9"}')
>>> {u'name': u'Andr\xc3\xa9'}
Когда я сохраняю вышеупомянутое в базе данных MySQL utf8, данные сохраняются, как показано ниже, используя Django:
SomeObject.objects.create(name=u'Andr\xc3\xa9')
Запрос столбца имени из оболочки MySQL или отображение его на веб-странице дает:
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)
Как я могу извлечь слово Андре из веб-службы, правильно сохранить его в базе данных без потери данных и отобразить на веб-странице в первоначальном виде?