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

PHP→MySQLでの文字化けについて


PHP→MySQLでデータを追加登録したところ、その間で文字化けが起こっているようで、phpmyadminで確認したところ、文字が化けています。どうしたらよいでしょうか?一応以下のように文字の処理をしているのでPHPのMySQLに挿入する直前まで文字列に問題はないようです。

$name1 = htmlspecialchars(stripcslashes($name1));
$name1 = mb_convert_kana($name1, "KV", "utf-8");
$name1 = str_replace("<br />", "", $name1);

●質問者: wakannaidesu
●カテゴリ:インターネット ウェブ制作
✍キーワード:MySQL PHP phpMyAdmin UTF-8 データ
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● vector
●23ポイント

1.mb関数のデフォルトエンコーディングと、データを挿入するところの文字エンコードは同じですか?

2.MySQL側はutf-8なのですか?


1であればmb_convert_encoding()で正しく何から何への変換なのか指定するか、mb_enternal_encoding()で元データの文字エンコードにセットしてください。


2であれば正しく文字コードをセットしてください。



また、最後に

$name1 = str_replace("<br />", "", $name1);

としていますが、htmlspecialchars()にて<>が変換されているので、

$name1 = str_replace("&lt;br /&gt;", "", $name1);

としないと取り除くことができないかと思われます。

◎質問者からの返答

1.2.共によくわかりません。

初心者なもので…1はどのタイミングでそれを使うのでしょうか?登録後、データ取得するタイミングなのですよね?

2はphpmyadminの使い方がいまいちわからないので、どこで設定していいのかわかりません。


2 ● ctrl-v
●22ポイント

http://wota.jp/ac/?date=20061011#p01

こちらのエントリーを参考に、MySQL側の文字コードをutf8に設定してください。


3 ● falcosapiens
●20ポイント

公式FAQに入れても良いくらいの頻出質問ですね。

まず,

$name1 = str_replace("
", "", $name1);

ですが,これは最初に実行してくださいね。

1の方が答えている通り,正しく置き換えられませんので。

問題のSQLの方ですが,

SQLでinsert文を発行する際に,まず set namesをしてください。

~

mysql_query("SET NAMES utf8");

mysql_query("INSERT INTO・・・");

~

データが正しくutf-8になっており

かつ,mysqlの設定もutf-8になっていれば,

これで正常に動作するはずです。

うまくいかなければ,どこかで文字コードがずれていますから

set namesの中身を ujisにしてみたりするなどして実験してください。

http://phpspot.net/php/pgMySQL4.1%8CnUTF-8%82%CC%8F%EA%8D%87.htm...

※本当は設定ファイルを探してsqlの設定文字コードを調べるべきですが・・・。


4 ● vector
●25ポイント

初心者なもので…1はどのタイミングでそれを使うのでしょうか?登録後、データ取得するタイミングなのですよね?

DBにデータを登録する際に行います。

データを取得する際には、元の文字コードに戻す必要があるかと思います。(ページもMySQLも文字コードがEUC-JPであれば必要ありません)


phpMyAdmin上でデータを挿入してみて、そのデータをphpMyAdminで正しく表示されている時に、右クリックから文字エンコードを見ればそれがMySQL側の文字コードです。


1が分からないのであれば、mb_internal_encoding()を使って、表示しているページの文字コードに合わせておけば良いかと思います。

本当はどちらもキチンと調べるべきですが。

関連質問


●質問をもっと探す●



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