4

使うか検討中です

PrintWriter pw = new PrintWriter(outputFilename, "ISO-8859-1");

また

PrintWriter pw = new PrintWriter(outputFilename, "US-ASCII");

Javaコードを介して同じエンコーディングで作成する必要があるサンプルファイルの文字セットを決定するために、すべての文字セットについて読んでいました。

サンプル ファイルに「ヨーロッパ」文字 (ノルウェー語: å ø æ) が含まれている場合、次のコマンドを実行すると、ファイル エンコーディングが「iso-8859-1」であることがわかります。

file -bi example.txt

ただし、同じサンプル ファイルのコピーを取得し、ノルウェー語のテキストを使用せずに別のデータを含むように変更すると (たとえば、「Bjørn」を「Bjorn」に置き換えます)、同じコマンドでファイルのエンコーディングが「 us-ascii".

file -bi example-no-european-letters.txt

これは何を意味するのでしょうか?「ヨーロッパ」文字が含まれていない場合、ISO-8859-1 は実際には US-ASCII と同じですか?

文字セット「ISO-8559-1」を使用するだけで問題ありませんか?

4

2 に答える 2

9

ファイルに 7 ビットUS-ASCII文字のみが含まれている場合は、 US-ASCII. 文字セットとして意図されたものについては何も伝えません。別のコーディングを必要とする文字がなかったのは、単なる偶然かもしれません。

ISO-8859-1 (および -15) は一般的なヨーロッパのエンコーディングであり、äöåéü およびその他の文字をエンコードできます。最初の 127 文字は US-ASCII と同じです (便宜上の理由からよくあることです)。

ただし、エンコーディングを選択して「すべて問題ない」と仮定することはできません。非常に一般的な UTF-8 エンコーディングにも US-ASCII 文字セットが含まれていますが、たとえばäöå文字を ISO-8859-1 の 1 バイトではなく 2 バイトとしてエンコードします。

TL;DR: エンコーディングを想定しないでください。意図されたものを見つけて、それを使用してください。見つからない場合は、データを観察して、使用する正しい文字セットを見つけようとします (ご自身で指摘したように、複数のエンコーディングが少なくとも一時的に機能する可能性があります)。

于 2015-06-10T08:10:14.790 に答える
1

それぞれのドキュメントで使用する文字の種類によって異なります。ASCII は 7 ビットの文字セットであり、ISO-8859-1 はいくつかの追加文字をサポートする 8 ビットの文字セットです。しかし、ほとんどの場合、入力ストリームからドキュメントを複製する場合は、ISO-8859-1 文字セットをお勧めします。メモ帳や MS ワードなどのテキストファイルで機能します。

異なる国際文字を使用している場合は、UTF-8 などの特定の文字をサポートする対応する文字セットを確認する必要があります。

于 2015-06-10T08:32:13.637 に答える