3

私は問題に直面しています。

ファイルはUTF-8UTF-16UTF-32、 などのエンコーディングで書き込むことができます。

ファイルを読み取るときはUTF-16、次のコードを使用します。

 BufferedReader in = new BufferedReader(
                           new InputStreamReader(
                           new FileInputStream(file), "UTF16"));

ファイルを読み取る前に、ファイルのエンコーディングを確認するにはどうすればよいですか?

UTF-8を使用してエンコードされたファイルを読み取るUTF-16と、文字が正しく読み取れません。

4

3 に答える 3

2

それを行う良い方法はありません。あなたが尋ねている質問は、それを見ることによって数の基数を決定するようなものです。たとえば、基数は101何ですか?

最善の解決策は、データをバイト配列に読み込むことです。次に、String(byte [] bytes、Charset charset)を使用して、複数のエンコーディングでテストできます。

于 2012-05-20T00:22:47.407 に答える
0

最初の数バイトを読み取って、エンコーディングを推測してみてください。

他のすべてが失敗した場合は、1つが機能するまで別のエンコーディングで読み取ってみてください(デコード時に例外はなく、「OK」に見えます)。

于 2012-05-19T19:30:17.730 に答える
0

それはいけません。どの変換形式が適用されるかは、通常、ファイルの最初の 4 バイトによって決まります (BOM を想定)。それらは外から見るだけではわかりません。

于 2012-05-19T19:12:50.583 に答える