После того как вы заметили, что приложение отклоняло случайные письма из-за неправильных ошибок в строковых значениях, я пошел и переключил много текстовых столбцов, чтобы использовать кодировку столбца utf8
и столбец столбца по умолчанию (utf8_general_ci
), чтобы он принимал их. Это фиксировало большинство ошибок и заставило приложение перестать получать sql-ошибки, когда оно попадает и в нелатинские электронные письма.
Несмотря на это, некоторые из сообщений электронной почты все еще заставляют программу удалять неверные ошибки строковых значений: (Incorrect string value: '\xE4\xC5\xCC\xC9\xD3\xD8...' for column 'contents' at row 1)
Столбец содержимого представляет собой MEDIUMTEXT
datatybe, который использует колонку столбцов utf8
и столбец utf8_general_ci
. В этом столбце нет флажков.
Помня о том, что я не хочу касаться или даже смотреть на исходный код приложения, если это абсолютно необходимо:
- Что вызывает эту ошибку? (да, я знаю, что электронные письма полны случайного мусора, но я думал, что utf8 будет довольно разрешительным).
- Как я могу это исправить?
- Каковы вероятные последствия такого исправления?
Одна вещь, которую я рассматривал, это переход на utf8 varchar ([некоторое большое число]) с включенным двоичным флагом, но я довольно незнакомый с MySQL, и понятия не имею, имеет ли смысл такое исправление.