ヒマをみつけてWeb開発
その場の思い付きを、ヒマをみつけてWebサイトにしてみるブログ

CGIのURLエンコードと、JavascriptのURLエンコードは微妙に違う

Wednesday, 22 July 2009 07:48 by sabro

クリエモンでURLエンコード周りのバグを出してしまいました( ̄□  ̄ ||

原因はCGIとJavascriptでURLエンコードが微妙に違うことでした。WikipediaのURLエンコードのページをみると、Javascriptでは、スペースは「%20」にエンコードされるが、CGI側では普通は「+」に変換されると書いてあります。なんでそんなややこしいことになってんだろ。これって知らないの僕だけで他のWeb開発者の間では常識なのかな(_ _ ||

とりあえず、おかしくなっていた部分では、HttpUtilityクラスのUrlEncodeメソッドが使われていました。以下はPowerShellでちょっと確認してみたところ。HttpUtilityクラスは、そのままでは参照できないんでリフレクションで「System.Web.dll」を読み込んでいます。


PS C:> [System.Reflection.Assembly]::LoadWithPartialName("System.Web")

GAC    Version        Location
---    -------        --------
True   v2.0.50727     C:\Windows\assembly\GAC_32\System.Web\2.0.0.0__b03f5f7f11d50a3a\System.Web.dll

PS C:> [System.Web.HttpUtility]::UrlEncode("<hoge fuga>")
%3choge+fuga%3e


PowerShell覚えると、インタプリタで動作確認ができちゃって楽ちんだな~( ̄∇ ̄) で、結果を見ると確かに「+」にエンコードされていますね。

調べてみると、UriクラスのEscapeDataStringメソッドを使えばJavascript形式のエンコードが出来るらしいとのこと。どれどれ


PS C:> [Uri]::EscapeDataString("<hoge fuga>")
%3Choge%20fuga%3E


おお、たしかに「%20」にエンコードされました(^^) 結局、UrlEncodeメソッドを使用している箇所を、のきなみEscapeDataStringメソッドに置き換えて、問題は解決したのでした。

ちなみに、UriクラスにはEscapeUriStringというメソッドもあります。こちらがどんな動作をするのか気になったので、サクッと確認してみました。


PS C:> [Uri]::EscapeDataString("http://www.hogefuga.com/<hoge fuga>")
http%3A%2F%2Fwww.hogefuga.com%2F%3Choge%20fuga%3E

PS C:> [Uri]::EscapeUriString("http://www.hogefuga.com/<hoge fuga>")
http://www.hogefuga.com/%3Choge%20fuga%3E


EscapeDataStringメソッドは、URLのコロンやスラッシュもエンコードしてしまいますが、EscapeUriStringメソッドは、URLを構成するための記号はエンコードしていません。すでに、URLになっている文字列に対してエンコードしたい時はこちらを使えばいいわけですね( ̄∇  ̄ )

Tags:   , , ,
Categories:   .NET
Actions:   Permalink | Comments (48) | Comment RSSRSS comment feed

Android携帯、HT-03Aを購入しました

Monday, 20 July 2009 20:34 by sabro

モバイル端末は、イーモバイルなどを持ってるさぶろーですが、携帯は長らくmovaを使ってきました。きょーびmovaはないわ~ということで、昨日、意を決してAndroid携帯、HT-03Aを買ってきました。iPhoneなんかにも興味はあったんですが、メイン言語がC#だと、やっぱりApple製品を買うのは躊躇してしまいます。

購入価格は、2年縛りで、32200円になり、さらにキャンペーンで10000円引かれて、22200円でした。

料金プランは、こんな感じです。
・タイプSSバリュー & ひとりでも割50 980円
・moperaU ライト 315円
・Bizホーダイダブル 上限 5985円
------------------------------------------------
合計 7280円

ザッと触ってみた感想としては、思ったよりもっさりしてませんでした。まだ、アプリが少ないからかもしれませんが、イーモバイルより動作はサクサクしていると感じます。

HT-03Aは、基本的にiモードには対応しておらず、どうしても使いたい場合は「iモード.net」を契約することになるのですが、こちらは契約せず、iモードは完全に捨てることにしました。ただ、PCのメールアドレスだと携帯でフィルタリングされて相手に届かないことがあるらしいので、場合によっては再契約するかも。

Androidは、アプリの開発も出来ると言うことで、ちょっとやってみたいのですが、今のところセカンドライフでやることがあるので、こちらは出来なさそうです。うちの今のメインターゲットはあくまでも、セカンドライフでやってるクリエモンです。現在PVを作成中で、完成したらyoutubeやニコ動にアップ予定なので、ぜひご覧になってみてください(^^)

Tags:   ,
Categories:   Android
Actions:   Permalink | Comments (41) | Comment RSSRSS comment feed