Возвращаемое значение в скрипте PowerShell хранится в строке, а не в utf8

Возвращаемое значение в скрипте PowerShell хранится в строке, а не в utf8

Я пытаюсь извлечь таблицы из pdf с помощью tabula и powershell. Когда я ввожу команду непосредственно в консоль 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создает файл (в UTF без BOM), я просто использовал относительный путь и не устанавливал [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
 ä      ä         Σ          ├ñ        „          ä
 ö      ö         ÷          ├╢        ”          ö
 ü      ü         ⁿ          ├╝                  ü

Связанный контент