Rückgabewert im Powershell-Skript, gespeichert in Zeichenfolge, nicht in utf8
Ich versuche Tabellen mit Hilfe von Tabula und Powershell aus einem PDF zu extrahieren. Wenn ich den Befehl direkt in der Powershell-Konsole eingebe, erhalte ich das erwartete Ergebnis (in utf8 mit Umlautsymbolen).
java -jar "./tabula-java/$tabulaVersion" --spreadsheet -a 114,53,180,556 "./table.pdf"
Wenn ich es jedoch in eine String-Variable stecke und dann in eine Datei schreibe, werden die Umlaute-Symbole 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 drucke, werden die Umlaute-Symbole 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 String-Variablen zu speichern (und damit den Inhalt bearbeiten zu können) und in eine Datei zu schreiben, wobei die utf8-Codierung (ohne BOM) beibehalten wird?
Der Ansatz von https://stackoverflow.com/a/5596984/1786528 funktioniert für mich ebenfalls nicht
$Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False [System.IO.File]::WriteAllLines($filepath, $text, $Utf8NoBomEncoding)
Ich erhalte keine Fehlermeldung, aber es wird auch keine Datei erstellt oder eine Zeile hinzugefügt.
Aktualisieren:
[System.IO.File]::WriteAllLines
erstellt eine Datei (in UTF ohne BOM), ich habe nur einen relativen Pfad verwendet und nicht gesetzt [System.Environment]::CurrentDirectory = (Get-Location).Path
. Trotzdem sind die Umlautsymbole nicht korrekt.
Weitere Details
Fall 1: Ausgabe direkt in der Konsole, z
java -jar "./tabula-1.0.1-jar-with-dependencies.jar" --spreadsheet "./table.pdf"
Fall 2: Ausgabe in Variable gespeichert, dann in der Konsole gedruckt, z
$text = java -jar "./tabula-1.0.1-jar-with-dependencies.jar" --spreadsheet "./table.pdf" Write-Output $text
Fall 3: Ausgabe in Variable gespeichert, jedoch mit -D"file.encoding=UTF-8"
, dann in der Konsole gedruckt, z
$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 United States (IBM437)
Fall 4: Ausgabe direkt in der Konsole (mit [System.Console]::OutputEncoding
vorheriger Änderung ), z
[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]::OutputEncoding
vorheriger Änderung ), z
[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 führt zu Umlautsymbolen
pdf case 1 case 2 case 3 case 4 case 5 ä ä Σ ├ñ „ ä ö ö ÷ ├╢ ” ö ü ü ⁿ ├╝ ü
0 Antworten auf die Frage
Verwandte Probleme
-
3
Wie kann ich eine Verzeichnisstruktur "invertieren"?
-
1
Pausieren Sie alle Aufgaben außer x CPU-intensiven Aufgaben
-
7
Starten Sie den Synergy-Client beim Booten in Mac OS X
-
4
Wie synchronisieren Sie GreaseMonkey-Skripts zwischen Computern?
-
1
Kann ich ein Skript schreiben, das Benutzer automatisch wechselt?
-
6
Guter PowerShell-Leitfaden, der durch fortgeschrittene Verwendung Einstieg leistet
-
3
FTP "PUT" schlägt von der virtuellen Maschine aus, aber nicht vom Host-PC aus: 504 Der Befehl ist fü...
-
6
Unicode, Unicode Big Endian oder UTF-8? Was ist der Unterschied? Welches Format ist besser?
-
5
Deaktivieren des Pieptons im cmd-Fenster
-
1
ksh entspricht perl $! Fehlerursache