- ベストアンサー
文字化け解決方法とは?
- 文字化けが解決できない問題について質問しています。SQLServer2008のデータベースで文字化けが発生しており、ブラウザのエンコードをUTF-8にすると一部が文字化けしないことを確認しています。
- SQLServerのデータの文字コードがUTF-8と仮定して、mb_convert_encoding関数を使用してプログラムを書いたが、結果は同じでブラウザのエンコードをSJISにすると文字化けしてしまう問題にぶつかっています。
- ブラウザのエンコードがSJISで文字化けしないようにする方法について教えてほしいという質問です。提供されたHTMLコード内で、charsetをShift-SJISに指定しています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
#2です。しょうこりもなくまたやってきました。おそらくこれが最後ですからもうちょっと付き合ってください。 > mb_detect_encoding($row) の実行結果は何も表示されませんでした 何も表示されない == 何も返ってこないじゃないですね。何が返ってるか確認しましょう。おそらく False なんだろうけど、その場合はエンコーディングが検出できなかったということらしい(マニュアル参照)。空文字ってあるのかな? とここまで書いて気づいた。$row って文字列じゃないじゃん(ふつうは名前で気づく。いかに適当に読んでるかバレる)。フィールド数がいくつかわからんけど、$row[0] とかやらないと値が取れないよね?
その他の回答 (2)
PHP は大昔にちょっとかじった程度なので参考程度にきいてください。 > ということはSQLServerのデータの文字コードがUTF-8ということなのでしょうか > SJISだと思うのですが。 "◯◯なはず" とか "◯◯だと思う" とか言っても始まらないんで、実際に調べたほうがいいんじゃないかな。mb_detect_encoding($row) と mb_detect_encoding("砂糖") を比較すればなにかわかるかも。 * おまけ * PHP のバージョンは明記した方がいい回答がつくかも。 * "charset=Shift-SJIS" は打ち間違いかなあ。"Shift-JIS" じゃなくて…。
お礼
ご回答ありがとうございます。 mb_detect_encoding($row) の実行結果は何も表示されませんでした mb_detect_encoding("砂糖") の実行結果はSJISでした。 いまだに、解決方法がわかりませんので皆様のご回答をお待ちしたいと思います PHPのバージョンはphp-5.3.13-Win32-VC9-x86.msiをインストールしたので PHP 5.3.13のWindows版だと思います。
- tyatsumi
- ベストアンサー率58% (30/51)
とりあえず、 <meta http-equiv="Content-Type" content="text/html; charset=Shift-SJIS"> charsetのShift-SJISは妙です。 Shift_JISが正しいらしいです。
お礼
ご回答ありがとうございます。残念ながらShift_JISの問題ではないようです 何が問題なのか全く検討がつきません。 引き続き皆さんからの回答を期待して待ちたいと思います。
お礼
ご回答ありがとうございました。 $row[0]でエンコーディングの変換処理 mb_convert_encoding($row[0], "SJIS", "UTF-8"); としたら文字化けせずに値が取得できました。 うれしさと感謝の気持ちでいっぱいです。 ありがとうございました