• ベストアンサー

PHPページの中に「結構」という文章を入れると・・・

変な発見をしたので、ご教授頂ければと思うのですが、 PHPにて、リストの中からランダムに選んだ文字を出力する というプログラムを作っていたところ、「結構」という文字を リストの中に入れると、エラーが起こってしまいます。 例えば、 "お菓子","九州","英語","結構","回路" とします。これだと、FTPでアップロードした後、 ブラウザで表示させるとエラーになってしまいます。 (Parse error: parse error, expecting `')'' in /home/httpd/vhosts/abc.com/subdomains/sub/httpdocs/test.php on line xxxというメッセージ) そこで、「結構」という文字を「結局」に変えてみます。 "お菓子","九州","英語","結局","回路" こうすると、なぜかエラーは出ず、正常にランダムで選んだ文字が 出力されるのです。 この原因は何でしょうか? もし良かったら、お試し下さい。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

有名なシフトJISの「5c問題」ですね 「構」の文字が「8D 5C」で構成されているため、5Cによって、 シングルクォーテーションがエスケープされています。 本質的な解決方法はシフトJISを使わないということしかありませんが たとえばご利用になっているftpのオプションでおかしくなっている 可能性もあるので、バイナリーモードで転送するなどで対応ができるかも しれません

di-keichu
質問者

お礼

お返事が遅くなり申し訳ございません・・・ 5c問題という存在を初めて知り、勉強致しました。 文字コードをシフトJIS以外に設定する事で問題を回避できました。 ご回答ありがとうございました。

その他の回答 (2)

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

構はShift JISのダメ文字のひとつですね 文字コード内部に 0x5C ('\')を含む文字はエスケープされるので文字化けしたりエラーの原因になったりします。 他にも'表'や'能'などがあります。 "結構\" のように後ろに\を追加すると大丈夫です。

di-keichu
質問者

お礼

お返事が遅くなり申し訳ございません・・・ 5c問題という存在を初めて知り、勉強致しました。 おっしゃる通り、文字コードをシフトJIS以外に設定する事で 問題を回避できました。 ご回答ありがとうございました。

  • memphis
  • ベストアンサー率40% (975/2395)
回答No.1

使っている文字コードとPHP環境はどういうようにしていますか? 手っ取り早いのは、文字コードをUTF-8にすれば直るでしょう。

di-keichu
質問者

お礼

お返事が遅くなり申し訳ございません・・・ 5c問題という存在を初めて知り、勉強致しました。 おっしゃる通り、文字コードをシフトJIS以外に設定する事で 問題を回避できました。 ご回答ありがとうございました。

関連するQ&A