Как вставить символы cp1252, используя MySQLdb? - PullRequest
0 голосов
/ 18 декабря 2018

Когда я пытался вставить правильные двойные кавычки (”), используя python MySQLdb, он выдает UnicodeEncodeError: 'latin-1' codec can't encode character u'\u201d' in position 0: ordinal not in range(256).Python MySQLdb по умолчанию использует кодек latin-1 и из файла index.xml в /usr/share/mysql/charsets/ он описывается как cp1252 для Западной Европы.Следовательно, я думаю, что latin1 будет также охватывать символы cp1252.Но latin1 не будет охватывать символы cp1252, если они это сделают, я не получу ошибку.

Правильные двойные кавычки лежат в кодировке cp1252, но не в кодировке ISO 8859-1 (или latin1).

В /usr/share/mysql/charsets/ нет файла cp1252.xml.Почему в Python MySQLdb отсутствует кодировка cp1252?

Или latin1 совпадает с cp1252, как они описаны в index.xml.

1 Ответ

0 голосов
/ 20 декабря 2018

Вам действительно нужен cp1252, а не utf-8?Я настоятельно рекомендую использовать utf-8.

Что вам нужно:

  • Pass charset="utf8mb4" опция для MySQLdb.connect().
  • Настройка базы данных для использования utf-8.

Вы можете создать базу данных с utf-8 с помощью CREATE DATABASE <your db name> DEFAULT CHARACTER SET utf8mb4.

Если у вас уже есть база данных, вы можете изменить набор символов по умолчанию с помощью ALTER DATABASE <your db name> CHARACTER SET utf8mb4.Но вам также нужно изменить весь набор символов для существующих таблиц в базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...