テキストファイルの読み込み書き出し - Get-Content他

PowerShellの内部文字コード

 echo こんにちは > utf16.txt
  • PowerShellの内部文字コードはUTF16(UTF16LE)。
  • コマンドレットの出力をリダイレクトでファイルにするとUTF16で保存される。

日本語PowerShellのデフォルト文字コード

  • 日本語PowerShellのデフォルト文字コードはSJIS。
  • 内部文字コードとデフォルト文字コードを分けて扱う。

テキストファイルの読み込み

 Get-Content utf16.txt
 Get-Content sjis.txt > utf16.txt
 Get-Content -Encoding UTF8 utf8.txt > utf16.txt
 Get-Content -Encoding Default sjis.txt > utf16.txt
  • テキストファイルの読み込みにはGet-Contentコマンドレットを使う。
  • 日本語PowerShellの場合、Get-ContentはUTF16またはSJISのテキストファイルを読み取れる。
  • UTF16やSJIS以外のファイルを読み込むには-Encodingオプションで文字コードを指定する。
  • 指定出来る文字コードはUTF8やAscii等でEUC-JPやJISは指定出来ない。
  • -Encoding Defaultと指定するとSJISを指定する事になる。

テキストファイルの書き出し

 Get-Content -Encoding UTF8 utf8.txt | Set-Content sjis.txt
 Get-Content sjis.txt | Set-Content -Encoding UTF8 utf8.txt
 Get-Content -Encoding UTF8 utf8.txt | Out-File utf16.txt
 Get-Content -Encoding UTF8 utf8.txt | Out-File -Encoding default sjis.txt
  • テキストファイルの書き出しにはSet-ContentかOut-Fileを使う。
  • Set-Contentはデフォルトの文字コードであるSJISで書き出される。
  • Out-Fileは内部文字コードであるUTF16で書き出される。

UTF8のBOMの除去

PowerShellによる

 [System.IO.File]::WriteAllLines("utf8.txt", "utf8.txt")

nkfコマンドによる

 nkf.exe -W8 -w --overwrite utf8.txt

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS