utf8이 아닌 문자열에 저장된 powershell 스크립트의 반환 값

utf8이 아닌 문자열에 저장된 powershell 스크립트의 반환 값

tabula와 powershell을 사용하여 PDF에서 테이블을 추출하려고 합니다. Powershell 콘솔에 직접 명령을 입력하면 예상 결과가 표시됩니다(umlaut-symbols가 포함된 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파일을 생성합니다(BOM 없이 UTF로). 방금 상대 경로를 사용하고 [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
 ä      ä         Σ          ├ñ        „          ä
 ö      ö         ÷          ├╢        ”          ö
 ü      ü         ⁿ          ├╝                  ü

관련 정보