2017-10-05 4 views
0

C#アプリケーションでProcessで起動したPowerShellのxmlstarletを使用します。 PowerShellの上XmlstarletエンコーディングとPowerShellの内部処理C#

./xml.exe ed -N ns=http://www.w3.org/2006/04/ttaf1 -d '//ns:div[not(contains(@xml:lang,''Italian''))]' "C:\Users\1H144708H\Downloads\a.mul.ttml" > "C:\Users\1H144708H\Downloads\a.mul.ttml.conv" 

私は(私はUTF-8を必要とする)間違ったエンコーディングでファイルを取得: 私の主な問題は、私はこのコードを使用する場合ということです。

はバッシュに私はちょうど

export LANG=it_IT.UTF-8 && 

xmlstarlet前に、しかし、PowerShellの上で、私は実際にそれを行う方法を知らないために使用されます。 おそらく別の方法がありますが、xmlstarletがsel-encoding UTF-8を使用できることがわかりましたが、edモードで使用する方法はわかりません(xml.exeの後にedなどの後で使用しようとしました。しかしそれはいつも失敗する)。

LANG = it_IT.UTF-8をエクスポートする代わりに、--encoding utf-8を使用する方法はありますか?

PS。

$MyFile = Get-Content "C:\Users\1H144708H\Downloads\a.mul.ttml"; $Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False; [System.IO.File]::WriteAllLines("C:\Users\1H144708H\Downloads\a.mul.ttml.conv", $MyFile, $Utf8NoBomEncoding) 

そして:

./xml.exe ed -N ns=http://www.w3.org/2006/04/ttaf1 -d '//ns:div[not(contains(@xml:lang,''Italian''))]' "C:\Users\1H144708H\Downloads\a.mul.ttml" | Out-File "C:\Users\1H144708H\Downloads\a.mul.ttml.conv" -Encoding utf8 

しかし、èàìùなどの文字がまだ間違っている私のような多くの、多くの事を試してみました。変換前に元のファイルをメモ帳で保存しようとすると(xmlstarletを使用しない場合のみ)...しかし、PowerShellで同じことをする必要があります。

EDIT。 私はPowerShellの上で私のUTF8を印刷することができました:

Get-Content -Path "C:\Users\1H144708H\Downloads\a.mul.ttml" -Encoding UTF8 

しかし、私はまだxmlstarletと同じことを行うことができませんよ。

答えて

0

最後に、ネイティブのC#メソッドを作成することにしました。私はStreamReaderを使用して、ファイルを1行ずつ読み込みます。単純なContainsでは、xml:lang = "Language"がどこにあるかを決めてから、すべての行を文字列に追加します。もちろん、whileループの前にファイルの先頭と末尾を追加し、Containsという行を読み込んだときにすべての行を追加するのをやめます。私はこれが最善の方法ではないことを知っていますが、私の場合はうまくいきます。

関連する問題