0

さまざまなオプションを試すだけで問題を解決できましたが、なぜそれが機能するのか理解できず、意味がありません...

ここでは、Facebook から UTF8 でエンコードされた JSON を受け取ります。テーブルは utf8_general_ci にあり、DB 接続も UTF8 でエンコードされています。

特別なことをしなければ、文字列は次のように挿入されます

ファビエン

しかし、挿入する前にutf8_decodeすると、次のように挿入されます

ファビエン

文字列に対して mb_detect_encoding を呼び出すと、UTF8 が返されます。

動作させるために utf8_decode を使用しなければならない理由を誰か説明できますか? または、コードを修正して utf8_decode を呼び出す必要がないようにするにはどうすればよいですか?

前もって感謝します。

4

2 に答える 2

0

問題が見つかりました。PDO で DB への接続を確立した後、コマンド「SET NAMES utf8」を実行する必要があります。古いバージョンの PHP (5.3.6) を使用していますが、接続文字列で charset=utf8 が無視されます...

この質問を参照してください: PHP PDO: charset, set names?

于 2012-09-18T21:28:38.563 に答える