Этот вопрос задавался много раз, но у меня не получилось никакого решения, у меня есть этот кусок кода:
Changes::$change['text'] = $data->employee->emp_first_name . ", " . $data->employee->emp_last_name . " in Woche " . $data->employee->week . " gelöscht <br>";
Changes::$change['user'] = $data->user->name;
$date = date_create();
$changeLogSql = utf8_encode("INSERT INTO change_log (date, name, change, affected_table) VALUES (now(), '". Changes::$change['user'] ."', '". Changes::$change['text'] ."', '" . Changes::$change['table'] . "')");
$fetched[0]['debug'] = $changeLogSql;
$result = $pdo->query($changeLogSql);
Без utf8_encode
Иногда я получаю ошибку:
Postgresql SQLSTATE[22021]: Character not in repertoire: ERROR: invalid byte sequence for encoding "UTF8":
В этом Insert
проблема в ö
в gelöscht
.Это можно исправить самостоятельно, но некоторые имена также содержат символ ö и приводят к той же ошибке последовательности байтов.
В моем тестовом окружении он работает нормально, только на производственной стороне возникает ошибка.Оба используют potsgresql 9.6.
Есть идеи, как заставить это работать без utf8_encode
?При этом он выглядит как «Ã liket» в моей базе данных.
Небольшое дополнение в том же файле php Я также вставляю те же именабез проблем в разных таблицах (без кодирования).Проблема возникает только в этом утверждении.Все поля имени определены как текст или varchar.