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
ファイルを作成します (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
ä ä Σ ├ñ „ ä
ö ö ÷ ├╢ ” ö
ü ü ⁿ ├╝ ü