人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

(PHP & MySQL) DBはMySQLで文字コードがEUC-JPです。

UTF-8で書かれたPHPスクリプトから日本語、英語以外で入力しDBに保管した場合、文字化けしてしまいます。


どうすれば文字化けせずに保管し、再度PHPで表示できるのでしょうか?

●質問者: esecua
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:dB EUC-JP MySQL PHP UTF-8
○ 状態 :キャンセル
└ 回答数 : 5/5件

▽最新の回答へ

1 ● tenshiks

多分この辺りではないでしょうか?

接続後に「SET NAMES ujis;」とクエリを流してやってください。


http://question.excite.co.jp/kotaeru.php3?q_id=2117214


若しくはmy.cnf、win鯖ならmy.iniの[mysqld]の下辺りに

skip-character-set-client-handshake

を追加してみてください。


http://d.hatena.ne.jp/secondlife/20051031/1130724806

◎質問者からの返答

接続後に「SET NAMES ujis;」とクエリを流してやってください。 とはどういう意味でしょうか?

mysql_query()で実行のようですが方法まで詳しくお願いします。


2 ● aiaina

PHPスクリプト,HTMLファイルの文字コードはすべてEUC-JPにしておきます。

HTMLファイルのメタ属性で

<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">

と追加しておくといいでしょう。

文字化けの大半は上記が正しく指定されていないのに原因があります。

◎質問者からの返答

全く意味が異なります。


3 ● tenshiks

通常のSELECT等のクエリと同様

mysql_connect()関数でDBに接続した後、他のクエリを流す前に。

mysql_query('SET NAMES ujis;');

としてください。


pearDBを使っているのであれば。

DB::connect()の後に、$db->query('SET NAMES ujis;');

ですね。

◎質問者からの返答

よく考えたらぜんぜん違うような。。。

日本語と英語の入力は全く問題ないのです。ただ韓国語や中国語などを入力すると文字化け(?????と表示される。)するのでその対処方法を教えてください。


4 ● vector

1-3の方は勘違いしているようですが、3の方法でujisではなくutf8とするとうまく保管できると思います。

2の方法だと日本語、英語以外の文字が表示できませんので。

◎質問者からの返答

ん?mysql_query()で実行してみたのですが韓国語などは???????と表示されていしまいます。

PHPスクリプトではDB内の文字化けを防ぐためにUTF-8からEUC-JPに変換して保存しています。

mb_convert_encoding($hatena, "EUC-JP", "UTF-8");

表示する際はこの逆です。

又Phpmyadminからは保存できるのですがPHPスクリプトから表示すると文字化けします。

何かいい方法はないでしょうか?


5 ● 最低人間

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スクリプトから表示すると文字化けします。

何かいい方法はないでしょうか?

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ