水無月ばけらのえび日記

bakera.jp > 水無月ばけらのえび日記 > System.Uri の MakeRelative

System.Uri の MakeRelative

2003年1月21日(火曜日)

System.Uri の MakeRelative

System.Uri.MakeRelative() は対象の URL とベース URL のスキーム、ホスト、ポートが一致しているとクエリストリングをばっさり切り落としてくれるのですが、一致していないとクエリストリングがそのままだったりするのではまりました。内部で何をしているのか何となく分かりますが……。

しかもその際、返ってくる文字列が AbsoluteUri ではなく ToString() なのがスゴイ。以下のようなコードを実行すると……

    Uri baseUri = new Uri("http://www1.example.com");
    Uri targetUri = new Uri("http://www2.example.com/foo?%83e%83X%83g", true);
    Console.Write(baseUri.MakeRelative(targetUri));

激しく文字化けした結果が得られたりします。ちょっと使いものにならないんですが……。

というわけで、Bakera.Url を微妙に修正したり。

関連する話題: コンピュータ / プログラミング / C#

最近の日記

関わった本など