PowerShell スクリプトの戻り値が UTF8 ではない文字列に保存される

PowerShell スクリプトの戻り値が UTF8 ではない文字列に保存される

Tabula と PowerShell を使用して PDF から表を抽出しようとしています。PowerShell コンソールに直接コマンドを入力すると、期待どおりの結果が表示されます (ウムラウト記号付きの UTF8 形式)

java -jar "./tabula-java/$tabulaVersion" --spreadsheet -a 114,53,180,556 "./table.pdf"

しかし、それを文字列変数に入れてファイルに書き込むと、ウムラウト記号が意味不明になります

$text = java -jar "./tabula-1.0.1-jar-with-dependencies.jar" --spreadsheet -a 114,53,180,556 "./table.pdf"   
Set-Content -Path "./file.txt" -Value $text

コンソールに変数を出力しても、ウムラウト記号が正しく表示されない

$text = java -jar "./tabula-1.0.1-jar-with-dependencies.jar" --spreadsheet -a 114,53,180,556 "./table.pdf"   
Write-Output $text  

それを文字列変数に保存し(したがってコンテンツを操作できるように)、utf8(BOMなし)エンコーディングを維持したままファイルに書き込む方法はありますか?

のアプローチを使用してhttps://stackoverflow.com/a/5596984/1786528私も効果がない

$Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False
[System.IO.File]::WriteAllLines($filepath, $text, $Utf8NoBomEncoding)

エラーは発生しませんが、ファイルも作成されず、行も追加されません。

アップデート:

[System.IO.File]::WriteAllLinesファイルを作成します (BOM なしの UTF 形式)。相対パスを使用しただけで、設定はしませんでした[System.Environment]::CurrentDirectory = (Get-Location).Path。しかし、それでもウムラウト記号は正しくありません。

さらなる詳細

ケース1: コンソールに直接出力します。例:

java -jar "./tabula-1.0.1-jar-with-dependencies.jar" --spreadsheet "./table.pdf" 

ケース2: 出力は変数に保存され、コンソールに表示されます。例:

$text = java -jar "./tabula-1.0.1-jar-with-dependencies.jar" --spreadsheet "./table.pdf"   
Write-Output $text 

ケース3: 出力は変数に格納されますが-D"file.encoding=UTF-8"、コンソールに表示されます。例:

$text = java -D"file.encoding=UTF-8" -jar "./tabula-1.0.1-jar-with-dependencies.jar" --spreadsheet "./table.pdf"   
Write-Output $text 

アップデート:

$OutputEncoding= US-ASCII および [System.Console]::OutputEncoding= OEM 米国 (IBM437)

ケース4: コンソールに直接出力する([System.Console]::OutputEncoding事前に変更しておく)、例:

[System.Console]::OutputEncoding = System.Text.Encoding]::GetEncoding(1252)
java -jar "./tabula-1.0.1-jar-with-dependencies.jar" --spreadsheet "./table.pdf" 

ケース5: 出力は変数に保存され、その後コンソールに印刷されます([System.Console]::OutputEncoding事前に変更されます)。例:

[System.Console]::OutputEncoding = System.Text.Encoding]::GetEncoding(1252)
$text = java -jar "./tabula-1.0.1-jar-with-dependencies.jar" --spreadsheet "./table.pdf"   
Write-Output $text 

ウムラウト記号の場合は次のようになります

pdf    case 1    case 2     case 3    case 4     case 5
 ä      ä         Σ          ├ñ        „          ä
 ö      ö         ÷          ├╢        ”          ö
 ü      ü         ⁿ          ├╝                  ü

関連情報