Возвращаемое значение в скрипте powershell, хранящемся в строке, а не utf8
Я пытаюсь извлечь таблицы из PDF, используя Tabula и PowerShell. Когда я ввожу команду непосредственно в консоль PowerShell, я получаю ожидаемый результат (в utf8 с символами umlaut)
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 ä ä Σ ├ñ „ ä ö ö ÷ ├╢ ” ö ü ü ⁿ ├╝ ü
0 ответов на вопрос
Похожие вопросы
-
3
Как я могу "инвертировать" структуру каталогов?
-
1
Приостановить все, кроме x задач, интенсивно использующих процессор
-
7
Запустить синергетический клиент при загрузке в Mac OS X
-
-
4
Как синхронизировать скрипты GreaseMonkey между компьютерами?
-
1
Могу ли я написать скрипт, который будет автоматически переключать пользователей?
-
6
Хорошее руководство по PowerShell, начало работы с более продвинутым использованием
-
3
Сбой FTP «PUT» на виртуальной машине, но не на хост-ПК: 504 Команда не реализована для этого парамет...
-
6
Unicode, Unicode Big Endian или UTF-8? В чем разница? Какой формат лучше?
-
5
Отключение звукового сигнала окна cmd
-
1
ksh эквивалент perl $! причина ошибки