1

コマンドを使用してPowerShellによって生成されたテキストファイルがあります

GetChild-Item C:\Source\Path | ForEach-Object { $_.Name } > "C:\MyPlace\outfile.txt"

outfile.txtこれは、このメモ帳++のように開くものを 生成しますメモ帳++

しかし、Java で開いて、次のように 1 行ずつ読むと、次のようになります。

while((line = br.readLine()) != null) {
    line = line.replaceAll("\\s", "");
    System.out.println(i + ":\t" + line);
}

それはこれを生成します:

Java 出力

これは私の処理を完全に台無しにします。空白文字を置き換えてみましたが、うまくいかないようです。何か案は?

4

2 に答える 2

4

>Out-Fileいくつかの事前定義されたパラメーター設定を持つ構文糖衣です。その1つがエンコーディングです。デフォルトOut-Fileでは、リトル エンディアンの Unicode でファイルが作成されます。したがって、ASCII エンコーディングでファイルを作成するには、次のようにします。

GetChild-Item C:\Source\Path | ForEach-Object { $_.Name } | 
    Out-File "C:\MyPlace\outfile.txt" -Encoding ASCII

...またはAdd-Content、デフォルトでASCIIを出力するものを使用できます:

GetChild-Item C:\Source\Path | ForEach-Object { $_.Name } | 
    Add-Content "C:\MyPlace\outfile.txt"
于 2012-05-25T17:58:55.490 に答える
3

問題は、Powershell が Unicode エンコーディングでファイルを発行しているように見えますが、Java はそれをプレーンな古い ASCII として読み取っています。ファイルを Unicode として読み取るには、Java コードを変更する必要があります。

于 2012-05-25T17:42:16.040 に答える