PowerShell/PowerShellでURLエンコード・URLデコード
の編集
Top
/
PowerShell
/
PowerShellでURLエンコード・URLデコード
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
(no template pages)
#navi(../) * PowerShellでURLエンコード・URLデコード [#zfdb4ea4] PowerShellでURLエンコード・URLデコードを行うサンプルを以下に記します。 #contents #htmlinsertpcsp(win-top.html,win-sp.html) * 関連記事 [#s88459d9] -[[PowerShellでBase64のエンコードとデコード>PowerShell/PowerShellでBase64のエンコードとデコード]] -[[PowerShellでURLエンコード・URLデコード>PowerShell/PowerShellでURLエンコード・URLデコード]] * 使用したPowerShellのバージョン [#afc8c97b] PS D:\> ($HOST.Version).ToString() 5.0.10586.117 * HttpUtilityクラス [#y6844750] HttpUtilityクラスを使用すると簡単にURLエンコード・デコードをすることができます。~ ただし、HttpUtilityクラスがデフォルトでは有効になっていないので、Add-Typeにて追加する必要があります。 Add-Type -AssemblyName System.Web 以下のように、簡単にURLエンコード・デコードをすることができます。 PS D:\> Add-Type -AssemblyName System.Web PS D:\> [System.Web.HttpUtility]::UrlEncode("あ") %e3%81%82 PS D:\> [System.Web.HttpUtility]::UrlDecode("%e3%81%82") あ ただし、UrlEncodeの出力を見ると、UTF-8になっているのがわかります。~ E38182はUTF-8では「あ」になります。 * 文字コードを指定してURLエンコード [#d803addd] 以下のようにGetEncodingを使用して、文字コードを指定することができます。 PS D:\> [System.Web.HttpUtility]::UrlEncode("あ",[Text.Encoding]::GetEncoding("sjis")) %82%a0 PS D:\> [System.Web.HttpUtility]::UrlEncode("あ",[Text.Encoding]::GetEncoding("SHIFT-JIS")) %82%a0 以下の出力のように、「aiueoあいうえお」の文字が入っているSJISのテキストファイルを作成しました。~ WindowsだとSJISファイルが多いと思いますので。~ Out-FileのEncodingオプションにdefaultを指定しているので、SJISで出力されます。~ (Encodingオプションに指定しないと(-Encoding defaultを記述しない)、UNICODE BOM付で出力されます。) PS D:\> Write-Output aiueoあいうえお | Out-File -Encoding default aiueo_sjis.txt PS D:\> gc .\aiueo_sjis.txt aiueoあいうえお このSJISのテキストファイル内容をURLエンコードしてみます。 PS D:\> Add-Type -AssemblyName System.Web PS D:\> [System.Web.HttpUtility]::UrlEncode((Get-Content(".\aiueo_sjis.txt")).toString(),[Text.Encoding]::GetEncoding("sjis")) aiueo%82%a0%82%a2%82%a4%82%a6%82%a8 PS D:\> [System.Web.HttpUtility]::UrlEncode((Get-Content(".\aiueo_sjis.txt")).toString(),[Text.Encoding]::GetEncoding("Shift-JIS")) aiueo%82%a0%82%a2%82%a4%82%a6%82%a8 尚、sjis, Shift-JISと記した部分をeuc-jpにすれば、eucにもなります。 PS D:\> [System.Web.HttpUtility]::UrlEncode((Get-Content(".\aiueo_sjis.txt")).toString(),[Text.Encoding]::GetEncoding("euc-jp")) aiueo%a4%a2%a4%a4%a4%a6%a4%a8%a4%aa 詳細は調べておりませんが、文字コードを判別してくれているようです。 * 文字コードを指定してURLデコードをする [#re7b47bd] 上記では文字コード指定による、URLエンコードを行いました。~ 以下、文字コード指定によるURLデコードの実行例を記します。 上記のsjisを指定してURLエンコードした文字列を使用しURLデコードしてみた例です。 PS D:\> [System.Web.HttpUtility]::UrlDecode("aiueo%82%a0%82%a2%82%a4%82%a6%82%a8",[Text.Encoding]::GetEncoding("sjis")) aiueoあいうえお 上記のeuc-jpを指定してURLエンコードした文字列を使用しURLデコードしてみた例です。 PS D:\> [System.Web.HttpUtility]::UrlDecode("aiueo%a4%a2%a4%a4%a4%a6%a4%a8%a4%aa",[Text.Encoding]::GetEncoding("euc-jp")) aiueoあいうえお 以下の例は、URLエンコードした文字コードがeuc-jpなのに、sjisを指定した例です。~ 当然、文字化けします。 PS D:\> [System.Web.HttpUtility]::UrlDecode("aiueo%a4%a2%a4%a4%a4%a6%a4%a8%a4%aa",[Text.Encoding]::GetEncoding("sjis")) aiueo、「、、、ヲ、ィ、ェ 以上、PowerShellでURLエンコード、デコードを行う方法の紹介でした。 #htmlinsertpcsp(win-btm.html,win-sp.html)
タイムスタンプを変更しない
#navi(../) * PowerShellでURLエンコード・URLデコード [#zfdb4ea4] PowerShellでURLエンコード・URLデコードを行うサンプルを以下に記します。 #contents #htmlinsertpcsp(win-top.html,win-sp.html) * 関連記事 [#s88459d9] -[[PowerShellでBase64のエンコードとデコード>PowerShell/PowerShellでBase64のエンコードとデコード]] -[[PowerShellでURLエンコード・URLデコード>PowerShell/PowerShellでURLエンコード・URLデコード]] * 使用したPowerShellのバージョン [#afc8c97b] PS D:\> ($HOST.Version).ToString() 5.0.10586.117 * HttpUtilityクラス [#y6844750] HttpUtilityクラスを使用すると簡単にURLエンコード・デコードをすることができます。~ ただし、HttpUtilityクラスがデフォルトでは有効になっていないので、Add-Typeにて追加する必要があります。 Add-Type -AssemblyName System.Web 以下のように、簡単にURLエンコード・デコードをすることができます。 PS D:\> Add-Type -AssemblyName System.Web PS D:\> [System.Web.HttpUtility]::UrlEncode("あ") %e3%81%82 PS D:\> [System.Web.HttpUtility]::UrlDecode("%e3%81%82") あ ただし、UrlEncodeの出力を見ると、UTF-8になっているのがわかります。~ E38182はUTF-8では「あ」になります。 * 文字コードを指定してURLエンコード [#d803addd] 以下のようにGetEncodingを使用して、文字コードを指定することができます。 PS D:\> [System.Web.HttpUtility]::UrlEncode("あ",[Text.Encoding]::GetEncoding("sjis")) %82%a0 PS D:\> [System.Web.HttpUtility]::UrlEncode("あ",[Text.Encoding]::GetEncoding("SHIFT-JIS")) %82%a0 以下の出力のように、「aiueoあいうえお」の文字が入っているSJISのテキストファイルを作成しました。~ WindowsだとSJISファイルが多いと思いますので。~ Out-FileのEncodingオプションにdefaultを指定しているので、SJISで出力されます。~ (Encodingオプションに指定しないと(-Encoding defaultを記述しない)、UNICODE BOM付で出力されます。) PS D:\> Write-Output aiueoあいうえお | Out-File -Encoding default aiueo_sjis.txt PS D:\> gc .\aiueo_sjis.txt aiueoあいうえお このSJISのテキストファイル内容をURLエンコードしてみます。 PS D:\> Add-Type -AssemblyName System.Web PS D:\> [System.Web.HttpUtility]::UrlEncode((Get-Content(".\aiueo_sjis.txt")).toString(),[Text.Encoding]::GetEncoding("sjis")) aiueo%82%a0%82%a2%82%a4%82%a6%82%a8 PS D:\> [System.Web.HttpUtility]::UrlEncode((Get-Content(".\aiueo_sjis.txt")).toString(),[Text.Encoding]::GetEncoding("Shift-JIS")) aiueo%82%a0%82%a2%82%a4%82%a6%82%a8 尚、sjis, Shift-JISと記した部分をeuc-jpにすれば、eucにもなります。 PS D:\> [System.Web.HttpUtility]::UrlEncode((Get-Content(".\aiueo_sjis.txt")).toString(),[Text.Encoding]::GetEncoding("euc-jp")) aiueo%a4%a2%a4%a4%a4%a6%a4%a8%a4%aa 詳細は調べておりませんが、文字コードを判別してくれているようです。 * 文字コードを指定してURLデコードをする [#re7b47bd] 上記では文字コード指定による、URLエンコードを行いました。~ 以下、文字コード指定によるURLデコードの実行例を記します。 上記のsjisを指定してURLエンコードした文字列を使用しURLデコードしてみた例です。 PS D:\> [System.Web.HttpUtility]::UrlDecode("aiueo%82%a0%82%a2%82%a4%82%a6%82%a8",[Text.Encoding]::GetEncoding("sjis")) aiueoあいうえお 上記のeuc-jpを指定してURLエンコードした文字列を使用しURLデコードしてみた例です。 PS D:\> [System.Web.HttpUtility]::UrlDecode("aiueo%a4%a2%a4%a4%a4%a6%a4%a8%a4%aa",[Text.Encoding]::GetEncoding("euc-jp")) aiueoあいうえお 以下の例は、URLエンコードした文字コードがeuc-jpなのに、sjisを指定した例です。~ 当然、文字化けします。 PS D:\> [System.Web.HttpUtility]::UrlDecode("aiueo%a4%a2%a4%a4%a4%a6%a4%a8%a4%aa",[Text.Encoding]::GetEncoding("sjis")) aiueo、「、、、ヲ、ィ、ェ 以上、PowerShellでURLエンコード、デコードを行う方法の紹介でした。 #htmlinsertpcsp(win-btm.html,win-sp.html)
テキスト整形のルールを表示する