プロが教えるわが家の防犯対策術!

シフトJISで書かれたPHPのページから日本語をGETで送り、
同じくシフトJISで書かれたPHPのページで受け取った文字を表示させたいのですが
「%8D%5D%8C%CB%90%EC%8B%E6」のような文字になってしまいます。

シフトJISのまま日本語を渡す方法はありますか?

携帯サイトだからなんとなくシフトJISを使っているのですが、
そもそもUTF8で書いた方が良いのでしょうか?

A 回答 (3件)

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

    • good
    • 0
この回答へのお礼

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

お礼日時:2011/10/31 11:39

既に回答が出ちゃってますが、「%8D%5D%8C%CB%90%EC%8B%E6」は、フォームから送られた文字がURLエンコードされたものです。


どの文字コードでも日本語送ろうとしたら、そうなると思いますよ。
日本語以外でも半角空白とかも そんな感じになりますし。

普通のPHPで受け取っているのであれば、勝手に URLデコードしてくれてそうなもんですが、してくれてないって事なんですかね?

> そもそもUTF8で書いた方が良いのでしょうか?

DBとか メールとか 他に 文字コードの絡みで何か起きそうなのがない限りは、SJISのままでも問題はないと思いますが、SJISは バグ文字があるので、個人的には使いたくない所です。

ただ、本当に古い携帯ってUTF8とか対応してないんですよね。
だから、コードはUTF8で書いて、出力と入力の時に変換するって言う面倒な事してたりします。

更に言うと、一部の古い携帯は GETにしか対応してなかったりもしますし。

そこら辺は、どこまで対応させるかって事次第ですね。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/10/31 12:03

「%8D%5D%8C%CB%90%EC%8B%E6」を一般的な方法で


シフトJISとして解釈すると「江戸川区」になります。

「シフトJISのまま日本語を渡す」の意味があいまいですが
一般的には正しく処理しています。


何か問題なのでしょうか?

そもそもGETで送るから気になってしまうのであって
POSTで送ったほうがいいのではないかと思います。
    • good
    • 0
この回答へのお礼

受け取ったページでUTF8のデータベースからデータを取り出すために
江戸川区をUTF8に変換したかったのですが、うまくいきませんでした。

urldecodeした後にUTF8へ変換したら取り出すことが出来ました。

PCのブラウザでチェックしていたのですが、携帯でテストしたら
urldecodeしなくても平気でした。

始めから問題なかったようです。

お礼日時:2011/10/31 11:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!