PHPでMySQLにSJISで格納されたデータを表示できません。

[¥]エスケープシーケンスの5Cの問題らしいのですが、”表¥”とやろうにも、
preg_replaceもうまく記述することができません。
これらの問題に対する解決法をご存知でしたらお教えください。
http://www.hatena.ne.jp/1114502073

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/04/28 17:27:49
  • 終了:--

回答(3件)

id:bmkage No.1

bmkage回答回数55ベストアンサー獲得回数02005/04/28 18:12:32

ポイント10pt

http://www.komonet.ne.jp/~php/faq.htm

PHP�悭�����^���E����

このページの「エラー1」では ダメでしょうか

id:nakeyouguisu

ん・・・

2005/04/28 18:21:04
id:upride No.2

upride回答回数220ベストアンサー獲得回数12005/04/28 22:05:23

ポイント10pt

my.iniの文字セットの設定をshift-jisに

することで回避する方法があります

(レンサバだといじれないですが・・)

PHP側の文字セットとHTMLの文字セット

Mysqlの文字セットと3箇所の設定の

組み合わせを考えると回避できます。

3箇所全部合わせるとベストなのですが

設定をいじれない環境の場合

mbstring系の関数を使うと回避できる

と思います

id:nakeyouguisu

レンタル鯖なので苦労しています。。。。

スクリプト処理でなんとかしようにも、そのスクリプトが処理できないのでなんとも苦労中です。

2005/04/29 14:38:29
id:upride No.3

upride回答回数220ベストアンサー獲得回数12005/04/29 17:33:38

ポイント50pt

2回目です。

もしかしてeuc-jpの文字セットに設定しているMySQLに

強引にShift-JISのデータを格納してないですか?

(画面のPHPの文字セットがShift-JISだから)


この場合文字セットShift-JIS→euc-jpに変換して見て下さい

$hoge = mb_convert_encoding($hoge,’EUC-JP’,’SJIS’)

で、この$hogeをInsertするとeuc-jpでMySQLに格納できます


で、反対にデータを取得して表示する場合は

$hoge = mb_convert_encoding($hoge,’SJIS’,’EUC-JP’)

としてShift-JISに変換した$hogeを表示させます

(変換後の$hogeはpreg_replaceとかしなくても正しい表示のはずです

id:nakeyouguisu

ありがとうございました。

PHP←→MySQLの箇所で文字化けしていたようです。テストプログラムでちょうど同じような理由にたどりついたところです。

大変助かりました。

解決しました。

PHPの関数。aimとsrcが…どうしても不慣れだと逆を指定してしまう…

2005/04/29 18:11:34

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません