アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下を実行すると、javaから送信される文字列"a+a"が"a a"に変換されてPHPから出力されます。
どうして + が半角スペースに変換されてしまうのでしょう?

・送り手側(クライアント、java)
URL url = new URL(サーバーのPHP);
URLConnection con = url.getOpenConnnection();
con.setDoOutput();
BufferedWriter bw = new BufferedWriter(new OutputStream(con.getOutputStream()), "UTF-8");
bw.write("text=a+a");
bw.flush();
cw.close();
~略~


・受け手側(サーバ、php)
echo $_POST["text"];

お詳しいかたみえましたら、+ がスペースに変わってしまう原因をお教えいただけないでしょうか。
何か思い当たることがあれば何でも構いません。

よろしくお願いします。

A 回答 (2件)

送られてきたデータを、URLエンコードされたものだとPHP側が解釈しているのではないでしょうか。


URLエンコーディングでは空白が+に変換されるので、それをデコードする際には+から空白への変換が発生します。

参考URL:http://ja.wikipedia.org/wiki/URL%E3%82%A8%E3%83% …
    • good
    • 0
この回答へのお礼

お二人とも素早い回答ありがとうございました。
お陰様で理解できました、よろしくお願いします。

お礼日時:2011/08/30 23:44

PHPが受け取った文字列をURLデコードするため


+ が半角スペースになるのだと思います。

「a+a」 であれば 「a%2Ba」のように、送り側で文字列を
URLエンコードする必要があると思います。

http://journal.mycom.co.jp/column/java/055/index …
http://java.sun.com/javase/ja/6/docs/ja/api/java …
    • good
    • 0
この回答へのお礼

お二方とも素早い回答ありがとうございました。
お陰様で理解できました、よろしくお願いします。

お礼日時:2011/08/30 23:45

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