Closed mkht closed 6 years ago
具体的にエスケープされる記号は<
, >
, '
, &
の4種類(たぶん)
PowerShellのConvertTo-Json
の動作仕様によるもので、
内部処理に使用しているJson.NETのJsonSerializerSettings.StringEscapeHandling
がEscapeHtml
でハードコードされていると思われる。
https://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_StringEscapeHandling.htm
現象が発生するのはPowerShell 5.1以前の環境のみ。
PowerShell 6.0ではConvertTo-Json
の動作仕様が変更されているためエスケープは発生しない
対処としてはPowerShell 6.0のConvertTo-Json
をバックポートするか、一度エスケープされた記号をエスケープ解除する処理を挟むか
既存のインデント調整用コマンドFormat-Json
の中にエスケープ解除する処理を追加した
例えばこういう
package.json
があるとしてこれに
pspm install bar -Save
などのpackage.json
に対する更新が走る処理をすると、のように一部記号がUnicodeエスケープされてしまう。 エスケープされていても動作上は問題ないが、可読性が著しく低下するのでツライ