Powershell テキストファイルの置換後にデータサイズが肥大化 原因は文字コード

Powershell テキストファイルの置換後にデータサイズが肥大化 原因は文字コードということで、変な挙動を示したので、備忘録となりますが、もともとANSIとして保存されたテキストファイルがあり、機器の設定ファイルなのですが、大量に数があって、一気に置換する必要があったので、PowerShellを使って効率よく、変換することにしました。

 

ちなみに大量ファイルを一気に更新する場合は、手作業でやっていたら非効率なので、PowerShellなどはほんとうに便利です。

 

最近は自動化とか効率よく仕事を進めることができるようになっていますので、ドンドン導入すべきですね。

 

工数が1/10とか平気でなりますから。

 

そして、タイトルに戻りますが、テキストファイルを置換後にデータサイズが倍くらいになっていました。

 

置換処理が失敗したか、想定外の置換処理を行っているのかと思って、diffしてみたのですが、正しく置換されていました。

 

 

何が原因なのかと思って、もしやと思ったら、元のファイルの文字コードANSIでしたが、変換後のファイルはUTF8になっていました。

 

これを手動で、ANSIにしたらファイルサイズが元のファイルと同じになりました。

 

ということで、私のケースだと文字コードが原因でした。文字コードANSIにするのに以下の情報が参考になりました。

文字エンコードについて - PowerShell | Microsoft Docs

 

> $PSDefaultParameterValues['*:Encoding'] = 'utf8'

 

ここを変更です。

 

> $PSDefaultParameterValues['*:Encoding'] = 'Default'

 

これでANSIに変換できました。PowerShellでの置換は文字コードなどで文字化けの原因にもなるので、注意が必要です。

 

モバイルバッテリー 軽量 小型 13800mAh 大容量 コンパクト 携帯バッテリー (PSE認証済) LCD残量表示 鏡面仕上げデザイン 持ち運び便利 急速充電 充電器 薄型 ミニ 携帯充電器 iPhone/Android/docomo/softbank/au 機種対応 出張 旅行 地震防災 アウトドア活動 黒