2017-09-20 11 views
3
が付けられ
FileInputStream fin = new FileInputStream("D:\\testout.txt");  
BufferedInputStream bin = new BufferedInputStream(fin);  
int i;  
while((i = bin.read())!=-1) {  
    System.out.print((char)i);  
}  

bin.close();  
fin.close();  

出力:私は、ファイルtestout.txtをチェックしてÿþGreatJavaでファイルの読み取り中に、入力が2つのジャンク文字

は、それだけで一つの単語すなわち、Greatが含まれています。

+0

出力には2つの追加文字が含まれています - >>ÿþGreat。 –

+0

入出力の例を教えてください。 – magicleon

+0

[ファイルの内容からJava文字列を作成するにはどうすればいいですか?](https://stackoverflow.com/questions/326390/how-do-i-create-a-java-string-from-the -contents-of-a-file) –

答えて

1

ほとんどの場合、Byte order markですが、UTF-8文字エンコーディングを使用するファイルでは使用できます(オプション)。メモ帳などのプログラムによってはこの可能性が説明されているものもあれば、そうでないものもあります。 Javaはデフォルトでそれを削除しません。

これを解決するユーティリティは、Apache Commons IOのBOMInputStreamです。

また、UTF-8として保存すると、メモ帳でファイルにバイトオーダーマークが書き込まれます。

1

ÿþはUTF-16のbyte order markです。文字列は、hereのようにjava.ioでUTF-8に変換できます。

さらに詳しい情報は、answerを参照してください。

0

この種の問題を解決するには、utf-8文字コードを使用してください。 バイト[] utf_8 = input.getBytes( "UTF-8"); //ユニコード文字列をUTF-8に変換する 文字列テスト=新しい文字列(utf_8);

2

テキストを使用する場合は、リーダーを使用する必要があります。例えば。

try(
    BufferedReader reader = Files.newBufferedReader(
     Paths.get("D:\\testout.txt"), 
     StandardCharsets.UTF_8) 
    ){ 
    int i;  
    while((i = reader.read())!=-1) {  
     System.out.print((char)i);  
    } 
}