ブロッコリーを克服するまでプログラミング

プログラミングとか趣味とかを報告します。

VBScript : Response.Formで受け取ると、すでにURLデコードされている?

一般的なのかわからないのですが、URLエンコードされた文字列をVBScript の Response.Formで 受け取ったら、受け取った段階でURLデコードされているという話。

 

類まれなる例なのかもしれませんが、こういった場合がありました。

クライアント側からURLエンコードしたデータをPOSTで送るから、VBScriptで受けてという話です。

で、私はサーバー側担当なので、「あ、URLデコード書かないといけないんだな」と思ったのですが、いざ取得データを確認してみるとすでにURLデコードされている状態でした。

 

ざっくり検索してもわからなかったし、これ以上踏み込む気もなかったので、とりあえず実証して終わりました。(クソプログラマー筆頭)

 

まず、VBScriptで以下のようなPOSTを受け取りResponseするだけの簡易的なプログラムを書きます。

 

test.asp

<%@ LANGUAGE = "VBScript" codepage="65001" %>

<%
Dim test01
Dim test02

test01 = Request.Form("test01")
test02 = Request.Form("test02")

Response.write "<TEST01>"
Response.write test01
Response.write "</TEST01><TEST02>"
Response.write test02
Response.write "</TEST02>"
%>

 

次に、以下のような2つの文章を用意します。

test01

これはテスト文章です。
2行目です。

 

test02

二つ目の文章です。

 

その後、NKFで上記文章をURLエンコードし、POST準備したものが以下のようなものです。

 

POST準備

test01=%E3%81%93%E3%82%8C%E3%81%AF%E3%83%86%E3%82%B9%E3%83%88%E6 %96%87%E7%AB%A0%E3%81%A7%E3%81%99%E3%80%82%0D%0A2%E8%A1%8C%E7%9B%AE %E3%81%A7%E3%81%99%E3%80%82&
test02=%E4%BA%8C%E3%81%A4%E7%9B%AE%E3%81%AE%E6%96%87%E7%AB%A0 %E3%81%A7%E3%81%99%E3%80%82

 

これをVBScriptにPOSTし、Responseを確認すると、以下のようになっています。

 

受信内容

<TEST01>これはテスト文章です。
2行目です。</TEST01><TEST02>二つ目の文章です。</TEST02>

 

以上からわかることは、VBScriptってすげぇな。