- ベストアンサー
シフトJISでのフォーム処理
シフトJISで書かれたPHPのページから日本語をGETで送り、 同じくシフトJISで書かれたPHPのページで受け取った文字を表示させたいのですが 「%8D%5D%8C%CB%90%EC%8B%E6」のような文字になってしまいます。 シフトJISのまま日本語を渡す方法はありますか? 携帯サイトだからなんとなくシフトJISを使っているのですが、 そもそもUTF8で書いた方が良いのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
それって、urlencodeされたShift_JISなので、urldecodeすればいいです。
その他の回答 (2)
- bm_hiro
- ベストアンサー率51% (200/388)
既に回答が出ちゃってますが、「%8D%5D%8C%CB%90%EC%8B%E6」は、フォームから送られた文字がURLエンコードされたものです。 どの文字コードでも日本語送ろうとしたら、そうなると思いますよ。 日本語以外でも半角空白とかも そんな感じになりますし。 普通のPHPで受け取っているのであれば、勝手に URLデコードしてくれてそうなもんですが、してくれてないって事なんですかね? > そもそもUTF8で書いた方が良いのでしょうか? DBとか メールとか 他に 文字コードの絡みで何か起きそうなのがない限りは、SJISのままでも問題はないと思いますが、SJISは バグ文字があるので、個人的には使いたくない所です。 ただ、本当に古い携帯ってUTF8とか対応してないんですよね。 だから、コードはUTF8で書いて、出力と入力の時に変換するって言う面倒な事してたりします。 更に言うと、一部の古い携帯は GETにしか対応してなかったりもしますし。 そこら辺は、どこまで対応させるかって事次第ですね。
お礼
勉強になります。 今回の問題は解決したので、とりあえずSJISのまま進めていきます。
- pringlez
- ベストアンサー率36% (598/1630)
「%8D%5D%8C%CB%90%EC%8B%E6」を一般的な方法で シフトJISとして解釈すると「江戸川区」になります。 「シフトJISのまま日本語を渡す」の意味があいまいですが 一般的には正しく処理しています。 何か問題なのでしょうか? そもそもGETで送るから気になってしまうのであって POSTで送ったほうがいいのではないかと思います。
お礼
受け取ったページでUTF8のデータベースからデータを取り出すために 江戸川区をUTF8に変換したかったのですが、うまくいきませんでした。 urldecodeした後にUTF8へ変換したら取り出すことが出来ました。 PCのブラウザでチェックしていたのですが、携帯でテストしたら urldecodeしなくても平気でした。 始めから問題なかったようです。
お礼
ありがとうございます! urldecodeで正しく表示することが出来ました。