Valor de retorno no script do powershell armazenado em string não utf8

1

Estou tentando extrair tabelas de um pdf usando tabula e powershell. Quando eu insiro o comando diretamente no console do powershell, recebo o resultado esperado exibido (em utf8 com símbolos de trema)

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

Mas quando eu coloco em uma variável de string e depois escrevo em um arquivo, os símbolos de umlaut se tornam sem sentido

$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

Mesmo se eu imprimir a variável no console, os símbolos de umlaut não serão exibidos corretamente

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

Existe uma maneira de armazená-lo em uma variável de string (e, portanto, ser capaz de manipular o conteúdo) e gravá-lo em um arquivo mantendo a codificação utf8 (sem BOM)?

Usar a abordagem do link também não funciona para mim

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

Eu não recebo um erro, mas também nenhum arquivo é criado ou adicionado à linha.

Atualização:

[System.IO.File]::WriteAllLines cria um arquivo (em UTF sem BOM), eu usei apenas um caminho relativo e não defini [System.Environment]::CurrentDirectory = (Get-Location).Path . Mas, não obstante, os símbolos de trema não estão corretos.

Detalhes adicionais

caso 1: saída diretamente no console, por exemplo

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

caso 2: saída armazenada na variável, depois impressa no console, por exemplo

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

caso 3: saída armazenada na variável, mas com -D"file.encoding=UTF-8" , depois impressa no console, por exemplo

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

Atualização:

$OutputEncoding = US-ASCII e [System.Console]::OutputEncoding = OEM Estados Unidos (IBM437)

caso 4: saída diretamente no console (com alteração de [System.Console]::OutputEncoding antes), por exemplo

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

caso 5: saída armazenada na variável, depois impressa na consola (com alteração [System.Console]::OutputEncoding antes), e.

[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 

Isso resultará em símbolos de umlaut

pdf    case 1    case 2     case 3    case 4     case 5
 ä      ä         Σ          ├ñ        „          ä
 ö      ö         ÷          ├╢        ”          ö
 ü      ü         ⁿ          ├╝                  ü
    
por josh21 13.04.2018 / 01:08

0 respostas