2016-11-23 4 views
-1

私はURIの後ろにパーセントエンコードされたスペース(20%)とURLのときにUri.ToString()を呼び出す場合、その後、あなたは結果として不正な形式のURLを持っていることに気付きました:URL is URI(反対の文が正しくありませんので.NET Uri.ToString()はURLを破棄しますか?

// result: "http://example.com/test segment" 
new Uri("http://example.com/test%20segment").ToString(); 

)と非エンコードされたスペースのURL is not valid URLのコンテナとしてUriを使用するのは安全ではないようです。

正しい動作ですか? MSDN 1として

+0

おそらく 'のToString()は '親符号化仕様以下'%20'を解析し、それがスペースであるべきであると判断されます。 –

+2

[MSDN](https://msdn.microsoft.com/en-us/library/system.uri.tostring(v = vs.110).aspx)は、通常のスペースで文字列を返す必要があると言います。空白の代わりに '%20'が必要な場合は、.OriginalStringを使用してください。 – Tvde1

+1

あなたが指摘したドキュメントは '.ToString()'は空白を返し、 '.OriginalString'は'%20'を返します。 – wdosanjos

答えて

3

// result: "http://example.com/test segment" 
new Uri("http://example.com/test%20segment").ToString(); 

// result: "http://example.com/test%20segment" 
new Uri("http://example.com/test%20segment").OriginalString; 
+0

良いキャッチ!それは直感的ではないですか? –

関連する問題