我有一个用于插入表的简单 SQL 语法。我正在使用 Postgresql 8.4,并且已经将数据库编码设置为 UTF8,并将 POSIX 设置为排序规则和字符类型。
如果我在 pgadmin3 下运行查询很好,但如果我在 PHP 中执行会带来错误。
"Internal Server Error: SQLSTATE[22021]:
Character not in repertoire: 7 ERROR:
invalid byte sequence for encoding \"UTF8\": 0xd85b\nHINT:
This error can also happen if the byte sequence does not match the encoding expected by the server,
which is controlled by \"client_encoding\"
所以我尝试从 PHP(PDO) 设置 NAMES 和 client_encoding,但仍然有同样的问题
$instance->exec("SET client_encoding = 'UTF8';");
$instance->exec("SET NAMES 'UTF8';");
pg_set_client_encoding($link, "UNICODE");
如果我使用本机 postgresql 驱动程序,我会工作pg_pconnect
,但目前我使用 PDO 作为驱动程序。
我也已经设置了mb_internal_encoding('UTF-8');
有没有其他方法可以解决这个问题?
仅当我尝试插入非 ascii 单词(如阿拉伯语或日语单词)时才会出现此错误