• ベストアンサー

シフトJISでのフォーム処理

シフトJISで書かれたPHPのページから日本語をGETで送り、 同じくシフトJISで書かれたPHPのページで受け取った文字を表示させたいのですが 「%8D%5D%8C%CB%90%EC%8B%E6」のような文字になってしまいます。 シフトJISのまま日本語を渡す方法はありますか? 携帯サイトだからなんとなくシフトJISを使っているのですが、 そもそもUTF8で書いた方が良いのでしょうか?

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

それって、urlencodeされたShift_JISなので、urldecodeすればいいです。

25taku
質問者

お礼

ありがとうございます! urldecodeで正しく表示することが出来ました。

その他の回答 (2)

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.3

既に回答が出ちゃってますが、「%8D%5D%8C%CB%90%EC%8B%E6」は、フォームから送られた文字がURLエンコードされたものです。 どの文字コードでも日本語送ろうとしたら、そうなると思いますよ。 日本語以外でも半角空白とかも そんな感じになりますし。 普通のPHPで受け取っているのであれば、勝手に URLデコードしてくれてそうなもんですが、してくれてないって事なんですかね? > そもそもUTF8で書いた方が良いのでしょうか? DBとか メールとか 他に 文字コードの絡みで何か起きそうなのがない限りは、SJISのままでも問題はないと思いますが、SJISは バグ文字があるので、個人的には使いたくない所です。 ただ、本当に古い携帯ってUTF8とか対応してないんですよね。 だから、コードはUTF8で書いて、出力と入力の時に変換するって言う面倒な事してたりします。 更に言うと、一部の古い携帯は GETにしか対応してなかったりもしますし。 そこら辺は、どこまで対応させるかって事次第ですね。

25taku
質問者

お礼

勉強になります。 今回の問題は解決したので、とりあえずSJISのまま進めていきます。

  • pringlez
  • ベストアンサー率36% (598/1630)
回答No.2

「%8D%5D%8C%CB%90%EC%8B%E6」を一般的な方法で シフトJISとして解釈すると「江戸川区」になります。 「シフトJISのまま日本語を渡す」の意味があいまいですが 一般的には正しく処理しています。 何か問題なのでしょうか? そもそもGETで送るから気になってしまうのであって POSTで送ったほうがいいのではないかと思います。

25taku
質問者

お礼

受け取ったページでUTF8のデータベースからデータを取り出すために 江戸川区をUTF8に変換したかったのですが、うまくいきませんでした。 urldecodeした後にUTF8へ変換したら取り出すことが出来ました。 PCのブラウザでチェックしていたのですが、携帯でテストしたら urldecodeしなくても平気でした。 始めから問題なかったようです。

関連するQ&A