PostgreSQL SQLSTATE [22021]:字符不在清单中:Ö

时间:2019-02-05 08:56:45

标签: php postgresql pdo

这个问题被问了很多遍,但是没有解决方案对我有用,我有这段代码:

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”。

enter image description here

在相同的php文件中添加一小段内容,我也可以在不同的表中插入相同的名称而没有任何问题(无需编码)。仅在此语句中出现问题。所有名称字段均定义为text或varchar。

0 个答案:

没有答案