У меня есть система, которую я создаю, которая вставляет строки в базу данных MySQL через запросы POST (API, встроенный в Flask/Python). В некоторых рядах есть акценты. В частности, у меня есть строка, в которой есть имя Péter
. Результат в коде, когда я делаю SELECT для БД в моем коде, равен P\xc3\xa9ter
. Это потребовало от меня выполнения некоторой работы в отношении кодировки символов. Когда я делаю запрос GET, я вытягиваю данные и пытаются выводить их в качестве ответа JSON, но получаю эту ошибку:Обработка символов с акцентом Python/MySQL
UnicodeDecodeError: 'utf8' codec can't decode byte 0xe9 in position 1: invalid continuation byte
Другие запросы GET прекрасны по строкам без акцентов, так что я начал, чтобы изолировать его вниз к этому вопросу.
Я использую экземпляр Amazon RDS в качестве моей базы данных MySQL. По умолчанию экземпляры RDS кодируются латином-1. Я входил и обновлял свои группы параметров, и теперь все выглядит как utf-8. Вот мой характер и сортировки переменных:
+--------------------------+-------------------------------------------+
| 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 | /rdsdbbin/mysql-5.6.27.R1/share/charsets/ |
+--------------------------+-------------------------------------------+
8 rows in set (0.00 sec)
+----------------------+-----------------+
| 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)
Я перезагрузил экземпляр и даже перезарядил всю базу данных. Как дополнительное разъяснение, я запускаю этот API локально в своей базе данных MySQL, и он работает нормально (что снова заставляет меня думать, что это кодирование, потому что вся база данных была импортирована непосредственно из моей версии localhost).
Я не совсем уверен, каким будет мой следующий шаг для устранения этой проблемы. Возможно ли, что он неправильно сохраняет его в БД? Я не делаю никакой кодировки, прежде чем вставлять ее в БД. Символ появляется в виде é в БД, когда я делаю инструкцию SELECT на нем из командной строки (должен ли он каким-то образом быть закодирован в БД)?
Благодарим за помощь!