ASP の自分的メモです。
Windows Server 2008 R2 の IIS7.0 を使って URL をエンコードする場合、以下のコードは利用できません。
Set sc = CreateObject("ScriptControl")
sc.Language = "JScript"
Set js = sc.CodeObject
ENCODE_STR=js.encodeURI(SOURCE_STR)
これは ScriptControl が 32ビットであるため、64ビット OS の IIS(ASP) では利用できないという事から発生します。
そこで、以下のような使い方をします。
ENCODE_STR = Server.URLEncode(SOURCE_STR)
この Server オブジェクトはエンコードを用意していますので、一発で変換することができます。
別なページへの引数渡しとして使うならこれだけで十分でしょう。
ところが戻しが必要となる場合、そうは行きません。
Server オブジェクトにはエンコードはありますが、デコードは用意されていないのです。
そこであれこれ試してみました。
汚い自分のコードより、Web 上に良い見本がありましたので掲載します。
ADODB.Recordset と Stream を使ったちょっと変則的アイデァなプログラムではありますが実用には耐えられそうです。
http://blog.blueshop.com.tw/hammerchou/articles/23385.aspx
但し、掲載されているソースの ADODB.Stream プロパティ の .Charset が Big5 になっていますので注意してください。
この部分を SHIFT_JIS に変更すれば IISで動作します。
自分的メモでした。
多くの人に知ってほしいテクニックですから、少々検索キーワードを張っておきます。
ASPでScriptControlが使えない II7でScriptControlが使えない 64ビット IIS7 Windows Server 2008 R2 x64 ScriptControl DecodeURL EncodeURL URLEncode URLDecode
製作者に感謝します。