В приложении Spring Boot появляется исключение SQL со словами Caused by: java.sql.SQLException: Incorrect string value: '\x92s.","...' for column 'json' at row 1
.Скорее всего, это означает, что я получаю данные из webhook как латиница-1 или Windows 1252. Я вижу два типа апострофов, '
и ’
.Моя база данных настроена как utf8mb4
.
. Я нахожу это немного странным, потому что раньше я получал сообщение об ошибке.Как я могу проверить, в какой кодировке отправляются данные?/ Как я могу решить эту проблему?
Webhook от Typeform.Когда я отправляю тестовый запрос через «test webhook», я вижу все виды \u2019
и подобные коды, когда смотрю на вкладку заголовка ответа в Chrome Dev Tools.Так что это должен быть Unicode.Я немного сбит с толку, почему MySQL интерпретирует это как latin-1.
Когда я распечатываю строку на бэкэнде перед сохранением, я вижу, что она в Unicode.Зачем?Из-за следующего: слово collega's
записывается как \x63\x6f\x6c\x6c\x65\x67\x65\x61\x27\x73
в юникоде (см. Конвертер здесь) , что составляет 99 111 108 108 101 103 97 39 115
в десятичном виде.Это то, что я вернусь.’
- это \xe2\x80\x99
или в десятичном виде 226 128 153
.
Когда я отлаживаю Mysql.IO.class
, я вижу, что кодировка символов WINDOWS-1252
.Это виновник, но где этот набор?Хм ... каким-то образом драйвер JDBC делает это по следующему коду в Connectionimpl.class
.
String encoding = null;
if (this.getUseUnicode()) {
encoding = this.getEncoding();
}