【PowerShell】curlコマンドの結果が文字化けする場合の対処方法


この記事はプロモーションを含みます。

PowerShell

ホーム > PowerShell 逆引きリファレンス

PowerShellのcurlコマンドで、UTF-8のデータを読み込んだ際に文字化けする問題の対処方法について解説します。

はじめに・実行環境

前回は、PowerShellでcurlコマンドを使用する方法を書きましたが、UTF-8のデータを取得した際、以下のように文字化けすることが判明しました。

PS C:\Workspace> curl 'http://192.168.66.14:8000/' | Select-Object -Expand Content
{"text":"ãµã³ãã« ã¡ãã»ã¼ã¸\n"}

今回は、文字化けしないようにデータを取得する方法を説明します。
実行環境は以下となります。

  • OS:Windows11
  • PowerShellのバージョン:5.1.22621.2506

curlコマンドでの接続先は、FastAPI・Uvicornで構築したAPIサーバとします。

取得例1

PowerShell標準のcurlコマンドで取得する方法です。
以下が実行例です。

PS C:\Workspace> curl 'http://192.168.66.14:8000/' | Select-Object{[System.Text.Encoding]::UTF8.GetString([System.Text.Encoding]::GetEncoding("ISO-8859-1").GetBytes($_.Content))} | Format-Table -HideTableHeaders

{"text":"サンプル メッセージ\n"}

PowerShellのcurlコマンドは「Invoke-WebRequest」にエイリアスが設定されているため、Invoke-WebRequestでも同様に取得することが出来ます。

PS C:\Workspace> Invoke-WebRequest 'http://192.168.66.14:8000/' | Select-Object{[System.Text.Encoding]::UTF8.GetString([System.Text.Encoding]::GetEncoding("ISO-8859-1").GetBytes($_.Content))} | Format-Table -HideTableHeaders

{"text":"サンプル メッセージ\n"}

取得例2

Windows10以降では、PowerShell標準のcurlコマンドの他、Windowsとして提供されている「curl.exe」があります。
こちらを使用することで、UTF-8形式のデータでも文字化けせずに取得することが出来ます。

PS C:\Workspace> curl.exe 'http://192.168.66.14:8000/'
{"text":"サンプル メッセージ\n"}

コメント

タイトルとURLをコピーしました