私はmysqlからpostgresqlにdbを移行しています。 mysql dbのデフォルトの照合順序はUTF8で、postgresはUTF8も使用していますが、pg_escape_string()を使用してデータをエンコードしています。私はこれを理解しようとチャンスをうかがって、PHPは奇妙な何かをやっていることに気づいてきたPostgreSQL + PHP + UTF8 =エンコードに無効なバイトシーケンス
pg_query() [function.pg-query]: Query failed: ERROR: invalid byte sequence for encoding "UTF8": 0xeb7374 HINT: This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client"
;:何らかの理由でしかし、私は悪いエンコーディングに関するいくつかのファンキーなエラーに実行していますよ文字列にASCII文字(例えば "hello")だけがある場合、エンコーディングはASCIIです。文字列にASCII文字以外の文字が含まれている場合、エンコーディングはUTF8(例: "Hëllo")であると言います。
すでにUTF8の文字列にutf8_encode()を使用すると、特殊文字が強制終了され、それらがすべて乱れてしまいます。これを動作させるには何ができますか?
(右今それをハングアップする正確な文字は「」ですが、だけではなく、検索/置換の、このちょっと問題が再び起こらないように、私はよりよい解決策を見つけるしたいと思います)
これを使って数時間を過ごした後、私は実際にmysqlがデータベースにutf8以外の文字列を許可していると考え始めました。これは問題の原因です。 – Ian