• ベストアンサー

urlencodeがうまくいかない

日本語をurlencodeを使ってGETで送っているのですが受ける側で元の文字に戻らないものがあります。 送信する文字:長野営業所資産管理表2005.xls urlencodeした文字:%92%B7%96%EC%89c%8B%C6%8F%8A%8E%91%8EY%8A%C7%97%9D%95%5C%82Q%82O%82O%82T.xls 受け取った文字:長野営業所資産管理表\2005.xls 「\」が一文字入ってしまいます。 全角の数字の送り方なんてあるのでしょうか?? よろしくお願いいたします。

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

  • ベストアンサー
回答No.2

漢字コードがSJISですと、「表」等の漢字は第2バイト目が5cで、「\」(バックスラッシュ)と同じASCIIコードになっているのでこのような症状が出ます。 他には、[申][予][噂][欺][構][十][ソ][暴] があります たとえば、長野営業所資産管理一覧.xls にしてみれば現状の環境でもでないと思います。 それとも、 長野営業所資産管理表\2005.xls あるいは、 EUCコードでエンコード するか、どちらかですね。

mentaiko2
質問者

お礼

理由がわかりました。 今回の問題の場合ファイル名ですので「\」が文字列に入ることはないのでNo,1の方の関数でやりましたが普通の文字列の場合(「\」も入る可能性のある文字列)EUCでエンコードした後、urlencodeしてSJISに戻せばいいんですね、今後はそのようにプログラミングします。 ありがとうございました。

その他の回答 (1)

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.1

FAQですね。 もしphp.iniを触れる権限があるのであれば magic_quotes_gpc をoffにしてみてください。 ないのであれば、 $str=stripslashes($str); ($strは受け取った文字)としてみてください。

mentaiko2
質問者

お礼

このとおりにやったら直りました。 ありがとうございます。

関連するQ&A

専門家に質問してみよう