日本語を含むShift-JISのファイルを読んでコンソールに出力 powershell7
新しいバージョンのパワーシェル は UTF 8 で読み込むので日本語で扱うには難しいです
バッチファイル
Shift-JISでバッチファイルを保存してください
echo e %*
::
@pwsh -NoProfile -Command "& (Invoke-Expression -Command ('{' + (Get-Content %~f0 -Encoding Shift-JIS | Where-Object {$_.readcount -gt 9}| Out-String )+ '}'))" %*
::powershell -Command "& (Invoke-Expression -Command ('{' + (Get-Content %~f0 | Where-Object {$_.readcount -gt 9}| Out-String )+ '}'))" %*
timeout /t 5&goto:eof
$PSVersionTable.PSVersion
$s = "らりるれろEncoding "
[Console]::OutputEncoding
$OutputEncoding
Write-Host $s
Start-Sleep -s 30
chcp 65001
[Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding('utf-8')
$OutputEncoding = [System.Text.Encoding]::GetEncoding('utf-8')
[Console]::OutputEncoding
$OutputEncoding
Write-Host $s
$s2 = [System.Text.Encoding]::GetEncoding('utf-8').GetString([System.Text.Encoding]::GetEncoding('utf-8').GetBytes($s))
Write-Host $s2
$s |Select-String -Pattern '.' -Encoding UTF8 | Write-Host
$s |Select-String -Pattern '.' -Encoding Shift-JIS | Write-Host
Start-Sleep -s 30
chcp 932
[Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding('shift_jis')
# $PSDefaultParameterValues['*:Encoding'] = 'shift-jis'
OutputEncoding = [System.Text.Encoding]::GetEncoding('shift-jis')
[Console]::OutputEncoding
$OutputEncoding
Write-Host $s
Start-Sleep -s 30
結果を見ると読み込む文字コードを正しく指定してあげればコンソール出力は自動で適正なものにやってくれるみたいです
内部的には UTF 8 で管理されてるようです
新しいパワーシェルでも初期はデフォルトはコンソールはshift_jisです
Major Minor Patch PreReleaseLabel BuildLabel
----- ----- ----- --------------- ----------
7 4 5
[Console]::OutputEncoding
EncodingName : Japanese (Shift-JIS)
WebName : shift_jis
HeaderName : iso-2022-jp
BodyName : iso-2022-jp
Preamble :
WindowsCodePage :
IsBrowserDisplay :
IsBrowserSave :
IsMailNewsDisplay :
IsMailNewsSave :
IsSingleByte : False
EncoderFallback : System.Text.InternalEncoderBestFitFallback
DecoderFallback : System.Text.InternalDecoderBestFitFallback
IsReadOnly : True
CodePage : 932
$OutputEncoding
Preamble :
BodyName : utf-8
EncodingName : Unicode (UTF-8)
HeaderName : utf-8
WebName : utf-8
WindowsCodePage : 1200
IsBrowserDisplay : True
IsBrowserSave : True
IsMailNewsDisplay : True
IsMailNewsSave : True
IsSingleByte : False
EncoderFallback : System.Text.EncoderReplacementFallback
DecoderFallback : System.Text.DecoderReplacementFallback
IsReadOnly : True
CodePage : 65001
ディスカッション
コメント一覧
まだ、コメントがありません