ホームページ  >  記事  >  バックエンド開発  >  php+mysqlの文字化け問題についてアドバイスをお願いします

php+mysqlの文字化け問題についてアドバイスをお願いします

WBOY
WBOYオリジナル
2016-06-23 13:33:34857ブラウズ

データベース環境:redhat AS5+mysql5.0.4 UTF8エンコード
WEB環境:win2003 nginx1.5 php5.2.17ページUTF8エンコード。
その他のメモ: アプリケーション (購入したもの) は mysql5.0.4 データベースを使用しており、データベース内のコンテンツの一部を表示する Web サイトを作成しました。フィールドの 1 つは、ページに表示される名前を保存するものです。 . mysql管理ツールで確認したところ、やはり文字化けしていました。 このサイトを書くときはASP.NET(C#)で色々試しましたが、最終的にはUTF8に変換すると正常に表示できるようになりました。 。当時の文字化けの対処法はトランスコードする関数を使ってUTF8に変換したのですが、今はPHPに詳しくないので解決策が見つかりませんでした
。以下は、この文字化けしたコードの問題を解決するために使用したコード (C#) です。PHP に修正する方法はわかりません。


ディスカッション (解決策) に返信してください。たとえば、データベースから文字化けしたフィールドの内容を $s に保存します

次に、結果を投稿します

表示されているのは、「ÕÛÒíÌìʹ」という効果です。

文字化けしたコンテンツが $s にあると仮定して、

echobase64_encode($s);

結果を投稿してください




*

これでしょうか?

あなたが投稿した「文字化けした」16 進数の内部コードは efbbbbfc395c39bc392c3adc38cc3ac​​c38ac2b9 です ここで、efbbbf は utf-8 文字セットの BOM ヘッダーです
明らかに、データを読み取る前に set names utf8 コマンドを実行しました
と c395c39 bc392c3ad c38cc3ac​​c38ac2b9 は latin1 文字です。 utf-8 エンコーディングへの変換
latin1 (Universal European Character Set 1) は ISO 8859-1
iconv('utf-8', 'latin1', substr($s,3)); の後に取得されます。 * 16 進数の内部コードは d5dbd2edcceccab9 です
明らかに、gbk でエンコードされた文字列です

ありがとうございます

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。