PHP で MYSQL データベースを操作する際に文字化けが発生する問題について、専門家の方、解決にご協力ください
私の状況は次のとおりです:
Web ページは GB2312 でエンコードされており、データベースのエンコードは UTF8 です。データベースの内容をWebページに読み込みたい場合は、文字化けの問題を解決するためにmysql_query("set names gb2312")という文を追加すると、Webページに表示される内容が文字化けしなくなります。 >
しかし、Web ページにデータベースのコンテンツを挿入するステートメントを追加するときに、文 mysql_query ("set names gb2312") を追加しないと、データベースに挿入されるコンテンツは次のようになります。データベースのエンコードが UTF8 であり、Web ページのコンテンツが GB2312 でエンコードされているため、文字化けが発生します
しかし、文 mysql_query("set names gb2312") を追加すると、データベースに追加されたコンテンツは文字化けを表示しません
I 私が理解できないのは、mysql_query("set names gb2312") という文が UTF8 データベースに挿入されたときに文字化けする問題を解決できるということです。 ?
Mysql_query("set names gb2312") は文字セットを GB2312 に設定しません。 逆にこれを追加しないと文字化けしないのはなぜですか?
専門家の方、助けてください
---- --解決策--------------- -----
set names はクライアントの文字セットを設定するために使用されます。
set names gb2312 は、挿入前に gb2312 エンコーディングで入力したことをデータベースに伝えることと同じです。この文では、 を付けないとデータベースはどのようなエンコードで入ってくるか分からないため、文字化けが発生します
同様に、クエリするときはセット名を使用しますgb2312 を使用して、gb2312 でエンコードされたデータを取得したいことをデータベースに伝えます。追加しない場合、データベースは gb2312 データを返します。 utf-8 である必要があります。Web ページに表示すると文字化けします