この記事では、Windows 10 バージョン 1803 以降で文字どおり解釈される UNC パスでの URI エンコードについて説明します。
適用対象: Windows 10 - すべてのエディション
元の KB 番号: 4467268
まとめ
Windows 10 バージョン 1803 以降のバージョンの Windows では、URL (SharePoint ドキュメント ライブラリなど) は、URI エンコード文字を含む汎用名前付け規則 (UNC) パスでは参照できません。
たとえば、パス http://myserver/Shared Documents
が URI エンコードされている場合、パスは http://myserver/Shared%20Documents
になります。 Windows 10 バージョン 1803 より前では、UNC パス \\myserver\shared%20documents を使用できました。 バージョン 1803 にアップグレードすると、"%20" はスペースではなくリテラル値 "%20" として解釈されなくなりました。 これにより、以前に生成されたリンクが正しい http パスに解決されるのを防ぐことができます。
詳細
これは仕様です。 UNC パスはリテラル パスを反映するように更新する必要があり、URI エンコード文字はすべて削除する必要があります。 または、パスがデコードされる file://so のスキームを使用します。 (例: file://\\myserver\shared%20documents)。
ローカルの Windows ファイル システムの名前付け規則と同等にするために、Windows 10 バージョン 1803 では、Web ベースのパス上のファイル名とフォルダーに追加の文字がサポートされています。
以前にサポートされていない文字の 1 つはパーセント記号 (%) です。 この文字は URI エンコードに使用されるエスケープ文字であるため、URI エンコードされた UNC パスは URI デコードされなくなります。 代わりに、リテラル パスとして扱われます。
Windows スタイルのパスは URI ではないため、通常の URI エンコード規則に従わないので、WebDAV スタイルのパスを Windows スタイルのパスに変換するときに、URI でパーセント エンコードを使用するすべての文字をデコードする必要があります。 同様に、Windows スタイルのパスでは、ファイル名の特殊文字を表すためにパーセント エンコードが使用されないため、WebClient サービスが URI に変換するときに Windows スタイル パス内のパーセント文字が観察されるたびに、"%" 文字の後に 2 桁の 16 進数が続く場合でも、"%" 文字は "%25" に置き換えられます。