テーブルに挿入するための簡単なSQL構文があります。私はPostgreSQL 8.4を使用しており、すでにデータベースエンコーディングをUTF8に、POSIXを照合と文字タイプに設定しています。Postgresql PHPがUTF8をエンコードするための無効なバイトシーケンス
私は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を設定しようとしましたが、それでも私はネイティブPostgreSQLのドライバpg_pconnect
を使用しますが、現在はしていた場合、同じ問題
$instance->exec("SET client_encoding = 'UTF8';");
$instance->exec("SET NAMES 'UTF8';");
pg_set_client_encoding($link, "UNICODE");
は仕事も私の持っています私はドライバーとしてPDOを使用しています。
と私はまた、すでにこの問題を解決する他の方法はありmb_internal_encoding('UTF-8');
を設定しますか?
このエラーi)が(はutf8_encodeでUTF-8にエンコードしてみアラビア語や日本語の単語のような
utf-8を使用するようにすべてのリンク/データベースエンコーディングを設定できますが、元の文字列がutf-8でエンコードされていない場合でもエラーが発生します。 – datasage
pgAdminから 'SHOW client_encoding;'の結果を投稿できますか? – Houari
1文字の入力と、エラーレポートの対応するバイトシーケンス(0xd85bなど)を表示してください。また、オペレーティングシステムのデフォルトのテキストエンコーディングが何であるか教えてください。もしあなたがわからなければ、Linux/unix上であれば 'locale'コマンドを実行してください。オリジナルのエンコーディングと元のテキストを知らなくても、あまり言い表せません。 –