重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

サーバー上に置いてあるphpMyAdminを使ってるんですが、
フォームから項目を送ってMySQLに保存してます。

そこで、大体の項目はフォームから送られてもその形のまま保存されているんですが、一部の内容だけが文字化けになってしまいます。例とすると「高橋 ジャネット」とフォームから入力すると「高橋 ジャネッ・/td>」と保存されているみたいです。

ここでここの論点なんですが、まず1つ目に管理画面で表示されるプルダウンでの言語設定がMySQLの言語設定になっているのか?
次に、設定がそこであるのであったとして、PHP+MYSQLの場合はEUC、SJISどちらのモードでソース+DBを組んだ方がいいでしょうか?
2番目については参考程度にお聞きしたいと思います。

結構MySQLで文字化けで検索すれば色々出てはくるのですが、みんなローカル環境でのもののようなので、質問したいのですが、大抵終わってたりしていますので、よろしくおねがいします。

A 回答 (3件)

高橋 ジャネット


と保存しているフィールドタイプを見てください
varchar(?)
(?)の部分です
半角で?文字分という意味です
高橋 ジャネットの場合、
スペースが半角と仮定すると、varchar(15)以上じゃないとダメですね
    • good
    • 0

初めて知りましたが、こんな関数もあるみたいですね。


さすが関数豊富なPHP。

内部エンコーディングを調べる
>>>mb_internal_encoding()

出力エンコーディング調べる
>>>mb_http_output()

HTTP入力文字エンコーディング調べる
>>>mb_http_input([引数])
引数はGでGET値、PでPOST値。指定しなければ、最後に送信されたもの。

MySQLの文字コードは、phpMyAdminでselectを発行したとき、結果が文字化けしないものです。
(おそらく、現在使用中の文字コードでしょう)

データ入力時にmb_convert_encodingを使うタイミングは、フォームの値を受け取るときがいいと思います。
クエリの形に整形した後だと、","や"'"などの1バイト文字との絡みで、うまくいかないかもしれないので。

化け方は、EUC-JPをShift JISで読んだときに似てますね。

サーバがIISでないなら、PHP、html、MySQL全てをEUC-JPに統一した方がいいと思います。

文字化けはいろんな原因が組み合わさって起こるので、ハマリやすいバグかつ非常にムカつきます。
私もよくPCに悪態ついてます(笑)。
気長にいろんなパターンを試してみてください。
    • good
    • 0
この回答へのお礼

とても丁寧にありがとうございました。

一つ思いっきり大事な事を書き忘れてたのですが、現在HTML、phpともにキャラクターセットはShift-JISで行っています。

今、phpMyAdminのページでEUCとSJISにエンコードをかけて文字化けする文字を入れてみたのですが、どちらも結局化けてしまいました…というか、そもそもEUCとSJISを選択できる時点でそれ意外なのでは?という疑問もでてきてるのですが、サーバーのタイプは後で管理者に聞いてみようと思います。

お礼日時:2004/12/05 15:27

文字コードは、環境によります。



phpinfo()を実行して、サーバーやエンジンの文字コードを確認してみてください。

あとどのタイミングで文字化けが起こっているか、段階を追ってテストしてみてください。

文字化けが発生する前の段階で、mb_convert_encodingなどを咬ませればよいと思います。
    • good
    • 0
この回答へのお礼

さっそくの指導ありがとうございました。
ですが、残念なことに今やった結果によると、サーバーの
セキュリティ上phpinfo()は実行できませんと表示されてしまいました…
他になにかいい方法ありましたらお願いします…

それと、タイミングなんですが、予想どおりフォームに
漢字+カタカナの小さい形が入るとその文字、もしくはその後から文字化けが発生しているみたいなので、エンコードするならそのデータをインプットもしくは、アップデートするときと考えていますが、あっているでしょうか?

お礼日時:2004/12/05 01:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!