UTF-8で書かれたPHPスクリプトから日本語、英語以外で入力しDBに保管した場合、文字化けしてしまいます。
どうすれば文字化けせずに保管し、再度PHPで表示できるのでしょうか?
多分この辺りではないでしょうか?
接続後に「SET NAMES ujis;」とクエリを流してやってください。
http://question.excite.co.jp/kotaeru.php3?q_id=2117214
若しくはmy.cnf、win鯖ならmy.iniの[mysqld]の下辺りに
skip-character-set-client-handshake
を追加してみてください。
PHPスクリプト,HTMLファイルの文字コードはすべてEUC-JPにしておきます。
HTMLファイルのメタ属性で
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
と追加しておくといいでしょう。
文字化けの大半は上記が正しく指定されていないのに原因があります。
全く意味が異なります。
通常のSELECT等のクエリと同様
mysql_connect()関数でDBに接続した後、他のクエリを流す前に。
mysql_query('SET NAMES ujis;');
としてください。
pearDBを使っているのであれば。
DB::connect()の後に、$db->query('SET NAMES ujis;');
ですね。
よく考えたらぜんぜん違うような。。。
日本語と英語の入力は全く問題ないのです。ただ韓国語や中国語などを入力すると文字化け(?????と表示される。)するのでその対処方法を教えてください。
1-3の方は勘違いしているようですが、3の方法でujisではなくutf8とするとうまく保管できると思います。
2の方法だと日本語、英語以外の文字が表示できませんので。
ん~mysql_query()で実行してみたのですが韓国語などは???????と表示されていしまいます。
PHPスクリプトではDB内の文字化けを防ぐためにUTF-8からEUC-JPに変換して保存しています。
mb_convert_encoding($hatena, "EUC-JP", "UTF-8");
表示する際はこの逆です。
又Phpmyadminからは保存できるのですがPHPスクリプトから表示すると文字化けします。
何かいい方法はないでしょうか?
MySQLにアクセスする際、つまりINSERTとかUPDATEとかSELECTする前に
SET NAMES 'utf8';
というコマンドを実行してあげてみてはどうでしょう。
ん~mysql_query()で実行してみたのですが韓国語などは???????と表示されていしまいます。
PHPスクリプトではDB内の文字化けを防ぐためにUTF-8からEUC-JPに変換して保存しています。
mb_convert_encoding($hatena, "EUC-JP", "UTF-8");
表示する際はこの逆です。
又Phpmyadminからは保存できるのですがPHPスクリプトから表示すると文字化けします。
何かいい方法はないでしょうか?
接続後に「SET NAMES ujis;」とクエリを流してやってください。 とはどういう意味でしょうか?
mysql_query()で実行のようですが方法まで詳しくお願いします。