Rückgabewert im Powershell-Skript in Zeichenfolge gespeichert, nicht in UTF-8

Rückgabewert im Powershell-Skript in Zeichenfolge gespeichert, nicht in UTF-8

Ich versuche mit Tabula und Powershell Tabellen aus einem PDF zu extrahieren. Wenn ich den Befehl direkt in der Powershell-Konsole eingebe, bekomme ich das erwartete Ergebnis angezeigt (in UTF-8 mit Umlauten).

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

Aber wenn ich es in eine String-Variable einfüge und dann in eine Datei schreibe, werden die Umlautsymbole zu Kauderwelsch

$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

Auch wenn ich die Variable in der Konsole ausdrucke, werden die Umlaute nicht richtig angezeigt

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

Gibt es eine Möglichkeit, es in einer Zeichenfolgenvariable zu speichern (und somit den Inhalt bearbeiten zu können) und es unter Beibehaltung der UTF-8-Kodierung (ohne BOM) in eine Datei zu schreiben?

Mit dem Ansatz vonhttps://stackoverflow.com/a/5596984/1786528klappt bei mir auch nicht

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

Ich erhalte keine Fehlermeldung, es wird aber auch keine Datei erstellt oder eine Zeile hinzugefügt.

Aktualisieren:

[System.IO.File]::WriteAllLineserstellt eine Datei (in UTF ohne BOM), ich habe nur einen relativen Pfad verwendet und kein gesetzt [System.Environment]::CurrentDirectory = (Get-Location).Path. Trotzdem sind die Umlaute nicht korrekt.

Weitere Details

Fall 1: Ausgabe direkt in der Konsole, zB

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

Fall 2: Ausgabe in Variable gespeichert, dann in Konsole gedruckt, zB

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

Fall 3: Ausgabe in Variable gespeichert, aber mit -D"file.encoding=UTF-8", dann in der Konsole gedruckt, zB

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

Aktualisieren:

$OutputEncoding= US-ASCII und [System.Console]::OutputEncoding= OEM Vereinigte Staaten (IBM437)

Fall 4: Ausgabe direkt in der Konsole (mit [System.Console]::OutputEncodingvorheriger Änderung), zB

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

Fall 5: Ausgabe in Variable gespeichert, dann in Konsole gedruckt (mit [System.Console]::OutputEncodingvorheriger Änderung), zB

[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 

Dies ergibt für Umlautsymbole

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

verwandte Informationen