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