powershell脚本中的返回值存储在字符串中而不是utf8中

powershell脚本中的返回值存储在字符串中而不是utf8中

我正在尝试使用 tabula 和 powershell 从 pdf 中提取表格。当我直接在 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
 ä      ä         Σ          ├ñ        „          ä
 ö      ö         ÷          ├╢        ”          ö
 ü      ü         ⁿ          ├╝                  ü

相关内容