結論を先に書くと PowerShell で書くとこんな感じです
[System.Web.HttpUtility]::UrlDecode($EncodeURL) |
Web ブラウザーに表示されている URL をそのまま UrlDecode
に食わせると、デコードしてくれる素敵なメソッドです
(Windows PowerShell 5.x で使う場合は、事前に「Add-Type
-AssemblyName System.Web」する必要があります)
参考情報
HttpUtility.UrlDecode Method (System.Web) | Microsoft Learn
どうしてこんなことを調べたかというと、SharePoint でファイルを格納しているフォルダーを共有するために、パンくずで表現したいと思ったのですが、Web UI に表示されているパンくずはうまくコピペができないんですよね...
フォルダーを開いているときの URI を見ると、パーセントエンコーディングされているので、ひょっとしてフォルダー パスがそのまま表現されているのではないかと思い、URL を PowerShell でエンコードするスクリプトを書こうと思い立ちました
そもそも URL で使用できる文字は、RFC3986/STD66(Uniform Resource Identifiers (URI): Generic Syntax)で定義されており、アルファベットと数字と一部の記号しか使用できません
日本語とか、RFC3986 で許可されていない文字を表す場合は、同 RFC3986
でパーセントエンコーディングするように定められています
("%"が大量に含まれている時々見る URL)
パーセントエンコーディングは、対象の文字列を UTF-8 にして、1バイトずつ16進数の文字列にして % を付ける仕様です
例えば「村」をパーセントエンコーディングすると、こんな感じになります
村 = 0xE69D91 → E6 9D 91 → %E6%9D%91
UrlDecode を使って、デコードされた URL から必要部分を取り出して、多少加工すればパンくずに出来ました
メデタシメデタシ
Google Drive のパンくずも取れると完璧なのですが... どうやら無理っぽい orz
Copyright © MURA All rights reserved.