Символ U + 201C Левая двойная кавычка отсутствует в кодировке Latin-1 (ISO-8859-1).
Это равно в кодовой странице 1252 (западноевропейский)).Это специфичная для Windows кодировка, основанная на стандарте ISO-8859-1, но содержащая дополнительные символы в диапазоне 0x80-0x9F.Кодовую страницу 1252 часто путают с ISO-8859-1, и это раздражает, но в настоящее время является стандартным поведением веб-браузера: если вы используете свои страницы как ISO-8859-1, браузер вместо этого будет обрабатывать их как cp1252.Однако на самом деле это две разные кодировки:
>>> u'He said \u201CHello\u201D'.encode('iso-8859-1')
UnicodeEncodeError
>>> u'He said \u201CHello\u201D'.encode('cp1252')
'He said \x93Hello\x94'
Если вы используете свою базу данных только как хранилище байтов, вы можете использовать cp1252 для кодирования “
и других символов, присутствующих в кодовой странице Windows Western.Но все же другие символы Юникода, которых нет в cp1252, вызовут ошибки.
Вы можете использовать encode(..., 'ignore')
, чтобы подавить ошибки, избавившись от символов, но на самом деле в этом веке вы должны использовать UTF-8как в вашей базе данных, так и на ваших страницах.Эта кодировка позволяет использовать любой символ.В идеале вы также должны сообщить MySQL, что вы используете строки UTF-8 (установив соединение с базой данных и параметры сортировки для строковых столбцов), чтобы можно было безошибочно сравнивать и сортировать регистр.