• ベストアンサー

なぜか + が半角スペースに変換されてしまう

以下を実行すると、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"]; お詳しいかたみえましたら、+ がスペースに変わってしまう原因をお教えいただけないでしょうか。 何か思い当たることがあれば何でも構いません。 よろしくお願いします。

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

  • ベストアンサー
  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

送られてきたデータを、URLエンコードされたものだとPHP側が解釈しているのではないでしょうか。 URLエンコーディングでは空白が+に変換されるので、それをデコードする際には+から空白への変換が発生します。

参考URL:
http://ja.wikipedia.org/wiki/URL%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89
Shinroh
質問者

お礼

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

その他の回答 (1)

  • tomaju
  • ベストアンサー率76% (84/110)
回答No.2

PHPが受け取った文字列をURLデコードするため + が半角スペースになるのだと思います。 「a+a」 であれば 「a%2Ba」のように、送り側で文字列を URLエンコードする必要があると思います。 http://journal.mycom.co.jp/column/java/055/index.html http://java.sun.com/javase/ja/6/docs/ja/api/java/net/URLEncoder.html

Shinroh
質問者

お礼

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

関連するQ&A