• ベストアンサー

PHPの5Cに関する文字化け

またまた文字化けの件で質問です。 Shift_Jisで書いたPHPでMysqlのデータベースにupdateしています。 $sql .= "UPDATE abc SET"; $sql .= " a= '".addslashes($a)."'"; のようなSQL文です。 このような場合 フォームから「表示」を送信した場合は 「update abc SET a='表\示'」となり正常に更新されます。 しかし最後に5Cの文字ある場合 「update abc SET a='テーブル表\'」となり '(シングルクォーテーション)がエスケープされて エラーになってしまいます。 そのような場合はどうしたらよいのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

内部エンコーディングがSJISになっているからです。 PHPは内部エンコーディングにSJISを選択した場合、2バイト文字の処理の際にこうなります。 内部エンコーディングをEUC-JP等に変更する必要があります。php.iniの設定で文字コード変換を自動で行う方法もあります。

参考URL:
http://www.php.net/manual/ja/ref.mbstring.php
rabu_chihaha
質問者

お礼

ありがとうございます。 なかなか難しいです。 いろいろやってみます。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.2

どーしてもSHIFT_JISで書きたいならば、 stripslashes()とかつかって、ちょっとトリッキーな書き方すれば対応可能

すると、全ての回答が全文表示されます。

関連するQ&A