Powershell テキストファイルの置換後にデータサイズが肥大化 原因は文字コードということで、変な挙動を示したので、備忘録となりますが、もともとANSIとして保存されたテキストファイルがあり、機器の設定ファイルなのですが、大量に数があって、一気に置換する必要があったので、PowerShellを使って効率よく、変換することにしました。
ちなみに大量ファイルを一気に更新する場合は、手作業でやっていたら非効率なので、PowerShellなどはほんとうに便利です。
最近は自動化とか効率よく仕事を進めることができるようになっていますので、ドンドン導入すべきですね。
工数が1/10とか平気でなりますから。
そして、タイトルに戻りますが、テキストファイルを置換後にデータサイズが倍くらいになっていました。
置換処理が失敗したか、想定外の置換処理を行っているのかと思って、diffしてみたのですが、正しく置換されていました。
何が原因なのかと思って、もしやと思ったら、元のファイルの文字コードはANSIでしたが、変換後のファイルはUTF8になっていました。
これを手動で、ANSIにしたらファイルサイズが元のファイルと同じになりました。
ということで、私のケースだと文字コードが原因でした。文字コードをANSIにするのに以下の情報が参考になりました。
文字エンコードについて - PowerShell | Microsoft Docs
> $PSDefaultParameterValues['*:Encoding'] = 'utf8'
ここを変更です。
> $PSDefaultParameterValues['*:Encoding'] = 'Default'
これでANSIに変換できました。PowerShellでの置換は文字コードなどで文字化けの原因にもなるので、注意が必要です。