这个问题被问了很多遍,但是没有解决方案对我有用,我有这段代码:
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
的情况下工作吗?有了它,在我的数据库中看起来像是“Ãt”。
在相同的php文件中添加一小段内容,我也可以在不同的表中插入相同的名称而没有任何问题(无需编码)。仅在此语句中出现问题。所有名称字段均定义为text或varchar。