• ベストアンサー

文字化けで困っています。

shift-JISで保存されているデータを読み込んで、Shift-JISで書かれているPHPを使ってShift-JISで出力しているのですが一部の単語で文字化けしてしまいます。 具体的には 自己申告→自己錐 パソコン→パャRン 元のデータを「申\告」「パソ\コン」のように入力しておくと文字化けが起きませんが、そんな形で保存もできないので困っています。 対策方法はないでしょうか。 よろしくお願いいたします。

  • umioyo
  • お礼率78% (172/220)
  • PHP
  • 回答数3
  • ありがとう数4

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

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

・magic_quotes_gpc ・addslashes ・stripslashes    を組み合わせればできませんか? 保存するときは、\無しで保存して ファイル表示するときは\有りで出力するというのはダメでしょうか?

umioyo
質問者

お礼

ごめんなさい。いろいろ試していてソースがぐちゃぐちゃになっていました。 正確には、出力するときに\がない状態でもstripslashes を使うと「パソコン」や「申告」で文字化けする現象でした。 stripslashesを取ることで一応対策できました。 お騒がせ致しました。

その他の回答 (2)

  • php504
  • ベストアンサー率42% (926/2160)
回答No.3

>\をstripslashesで取って表示すると文字化けし、取らないでそのままだと正常に表示します。 ということはstripslashesを使わなければいいのではないでしょうか。

umioyo
質問者

お礼

ごめんなさい。いろいろ試していてソースがぐちゃぐちゃになっていました。 正確には、出力するときに\がない状態でもstripslashes を使うと「パソコン」や「申告」で文字化けする現象でした。 stripslashesを取ることで一応対策できました。 お騒がせ致しました。

umioyo
質問者

補足

はい。その場合だとデータにエスケープが必要になってしまいます。 どの文字で化けるかわからないので、すべての単語に\をつけるわけにもいきません。

回答No.1

 私もそれで苦労しました。 stripslashesで解決できるかと思います。 以下のページが参考になります

参考URL:
http://www.syon.co.jp/syontech/tech003.html
umioyo
質問者

お礼

いえ、逆なんです。 \をstripslashesで取って表示すると文字化けし、取らないでそのままだと正常に表示します。 よろしくお願いいたします。

関連するQ&A

  • 文字化けの状態で上書き保存した場合、戻せますか。

    こんにちは。 HTMLファイルを文字化けした状態で 開き(EUC-JPファイルをWindowsのメモ帳で 開きました。Shift-jisで開いています)、 英文字部分を直し、そのまま、 上書き保存してしまいました。 このファイルが、ブラウザで、Shift-jisを 指定しても、Euc-jpを指定しても、 文字化けを起こします。 テキストエディッタでは、常にShift-jisで 開かれてしまい、文字化けです。 これをメモ帳以外のテキストエディッタで Euc-jpで保存しなおすと、さらに 文字化けがひどくなります。 Shift-jisで保存したファイルをEuc-jpで 開けるエディタがあればいいかも 知れませんが、こういうエディタは ありません。(もっともブラウザで、 Euc-jpで文字化けをする以上、エディッタでも 無理かもしれません)。 このように、 Euc-jpをShift-jisで開いてしまい、 そのまま、Shift-jisで保存してしまうと、 もはや、もとに戻せないのでしょうか。 (簡単に直ると思っていたのですが、 ぜんぜん直らず困っています)。 何か分かる人がいましたら、 よろしくお願いします。

  • 文字化けで混乱中です...

    こんにちは。PHPの文字化けで混乱しており、どなたかにご助言いただければ幸いです。 現在、PHPは拡張子「.php」、HTMLは拡張子「.html」で動いているものを 拡張子「.html」でもPHPを動作させたいので、.htaccessにて AddType "application/x-httpd-php; charset=Shift_JIS" .php .html と指定しました。 これで拡張子「.html」でもPHPが動かせるようになりましたが、それとともにPHPスクリプトの入っていない他のHTMLファイルが文字化けしてしまうようになりました。 しかし、.htaccessに AddType "application/x-httpd-php; charset=Shift_JIS" .php .html AddType "text/html; charset=Shift_JIS" .html こうしてしまうとPHPが効かなくなるし...うーん?と 多分スゴイ手前のところで混乱してきてしまいました。 HTMLファイル内ではmetaでShift-JISを設定しています。 HTMLファイル内でheaderとかやらない方法で、文字化けを回避する方法をお教えいただけますと助かります。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 文字化けの件ですが

    Google chromeであるサイトが文字化けしたので原因を調べ、エンコードを 日本語(EUC-JP)にしたら直りました。 しかし元のShift-JISに戻さなかった場合、 shiftーJISで見れていたページが文字化けすることはありうるのでしょうか

  • 文字化けにどう対処したら・・・PHPをShift_JISで書いて、MYSQLに格納しました

    最初からEUCで書けばよかったのでしょうが? 知識が無くて、全部Shift_JISで書きました。 (文字化けをなめていました。。) 結構、文字化けすることが多くて修正するしかなくなってきましたが 全部書き直さずに改良するにはどうしたらいいでしょうか? PHP Version 4.4.2 MYSQL 4.0.26 にデータはきちんとShift_JISで入っているようです。 **phpmyadminでShift_JISで表示させるとちゃんと表示します、  それ以外で表示させると文字化けします。 フォームを使って、MYSQLに格納して 後で、呼び出して表示するだけです。 どうか宜しくお願いいたします。 相変わらず、要領の得ない質問でスミマセン。

    • ベストアンサー
    • PHP
  • Dreamweaverでソースが文字化けしてしまいました。

    Dreamweaverでソースが文字化けしてしまいました。 メタタグが <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> になってたので、 <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> に修正して、保存して終了したあとに、再度Dreamweaverで開いたところ、ソースが全部文字化けしてしまいました。 元に戻そうと、メタタグをもとのutf-8に戻しても直りません。 メタタグをShift_JISにして、ページプロパティのエンコーディングをShift_JISに合わせると、ソース全部が文字化けしていた状態は直ったんですが、ところどころ文字化け状態のままになっています。 完全にもとの状態に戻したいのですが、どうしたら文字化けが直るのでしょうか。 教えてください。 よろしくお願いします。

  • MySQL→PHPでデータリストを作ると文字化けが…

    MySQL→PHPでデータリストを作ると文字化けが起こるのですが、なぜでしょうか?METAはshift_jisで統一しているので問題ないはずですが、文字化けします。phpmyadmin上では文字化けせずに表示されるのでデータベース登録までは問題ないと思うのですが… よろしくお願いします。

    • ベストアンサー
    • PHP
  • 文字化けで困っています。

    PHP のプログラムで CSV の読み込みを行うプログラムを組んだのですが、 文字化けするケースがあり困っています。 どういうケースで文字化けするのかもよくわからないのです。 CSV 読み込みプログラムは、次のサイトのものを利用させていただいています。 http://d.hatena.ne.jp/deeeki/20110410/excel_csv_php 文字化けする文字は、全角大文字で。 「INSURANCE BLDG. VI(6)」 で、 文字化け後の文字は、 「��NSURANCE BLDG. VI(6)」 です。 Excel で作成した CSV データを UTF-8 の PHP アプリでデータベースに 登録しようとしています。 Shift_JIS から UTF-8 の文字コード変換です。 わかる方、書き込みお願いします。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 文字コードでなる文字化けの直し方お願いします。

    海外のWEBHOSTサーバーの WE○NGというところを使っているのですが。 HTMLの記述で charset="Shift_JIS" とすると日本語が文字化けします。 Shift_JIS を EUC-JP iso2022-jp UTF-8 ASCII と色々変えてみても、全部日本語が文字化けしました;; 文字化けにならない、日本語が表示されるにはどうしたらよいでしょうか。 お知りの方 よろしくお願いします。

  • 文字化けについて

    PHP5 MySQL5 phpMyAdmin の3種でシステム構築を行っていました。 この度新しいPCで環境を設定した所、文字化けが起きてしまいました。 構築した以前のローカル環境と各バージョンや設定は同じはずなのですが、文字化けに悩まされています。 具体的には、MySQLはEUCでPHPはShift_JISにて構築しています。 システムの構造は、Shift_JISをMySQLに挿入する際はEUCに変換して格納しています。 文字化けは、phpMyAdminでは正常にみれるものがシステムをブラウザから確認すると日本語が全て???に文字化けしてしまっています。 そこで、phpMyAdminからDBの文字コードをlatin1にした所、今度はphpMyAdmin上で文字化けし、ブラウザ上からは正常にみえるといった状態です。 数日格闘しているのですがお手上げ状態です。 どなたかアドバイス頂ければ幸いです。

    • 締切済み
    • PHP
  • 文字化けを直すには

    現在別のサイトで使ったメールフォームを元に、別のメールフォームを作り直しているのですが、 文字化けが発生してしまいます。 元々のサイトで使っていたメールフォームのエンコードはUTF-8で、今回はshift-jisになるので メタタグで文字コード宣言をshift-jisにしているのですが、それでも文字化けが起こります。 エンコードをutf-8にすると直ります。 修正の仕方を調べても文字コードの宣言しか見当たらないので、どのように修正してよいか わかりません。 原因等わかる方がおられましたら教えてください。

専門家に質問してみよう