クリエモン、URLエンコード周りのバグを修正しました

sabro

2009年07月21日 01:55


クリエモンにバグが発見されました( ̄□  ̄ ||

バグの内容は、配布場所一覧ページから、名前にスペースを含むSimのURLを開いてもテレポートできないというものです。

プログラムをやる人なら、原因はなんとなく分かると思いますが、URLエンコード方法のミスです。インワールドからWebサーバへポーリングの最後の方で書いたように、URLエンコードは、C#の、HttpUtility.UrlEncodeメソッドを使っていました。これは、名前の通りURLエンコードを行うクラスで、これ使っとけば問題ないだろうと思っていたのですが、本来スペースは「%20」に変換されて欲しいところが、「+」に変換されていました。

WikipediaのURLエンコードのページをみると、JavascriptとCGIではスペースのエンコードが異なり、CGI側では「+」に変換されるのが普通だそうです。これってひょっとして常識なんでしょうか( ̄□  ̄ ||

で、なんとかC#でJavascript方式の変換が出来ないかと調べたところ、Uri.EscapeDataStringメソッドを使えばいいことが分かりました。現在は、このメソッドに修正してありますので、問題なくテレポートできるはずです。以前に、なぜか配布場所一覧からテレポートに失敗したことがある方は、お試しください。

今回の件は、クリエモンのユーザ様から報告頂いたのですが、バグの早期発見に繋がって大変助かりました(^^) 皆様もおかしな挙動を発見したら気軽に、Sabro Boucherまでご連絡ください m(_ _)m
クリエモン