テーブルに挿入するための簡単なSQL構文があります。私はPostgresql8.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以外の単語を挿入しようとした場合にのみ表示されます。