| Works
"Invoke-RestMethod"とかの文字コード
ここのところ、Windows環境からREST APIを叩くためにPowerShellで"Invoke-WebRequest"や"Invoke-RestMethod"を頻繁に使っています。
このとき、POSTメソッドとかのBodyに含まれているマルチバイト文字がUTF-8として認識されていなかった。
基本的なことなんだけど、やり方が分かるまでちょっと苦戦したのでメモ。
結論としてはデータ型をバイト列にして送ればいい。
自分はBodyをヒアドキュメントで記述することが多いので、以下のようにエンコードしてPOSTする。
$BodyXml = @"
<root>
<data1>データ01</data1>
<data2>データ02</data2>
</root>
"@
$Byte = [System.Text.Encoding]::UTF8.GetBytes($BodyXml)
$Res = Invoke-RestMethod -Uri "http://localhost/api" -Method POST -Body $Byte
いつまで経っても文字コードでハマるんだよなぁ…。