1

RandomAccessFile オブジェクトを使用してファイルにテキストを書き込もうとしていますが、英語以外の文字が正しく保存されません。

具体的には、この文 --> 「und NotenstEnder Libero」

このように保存されます --> 「und Notenst•nder Libero」

「E」文字は英語ではありません(ASCIIコードは917だと思います)。

私が使用しているコードはこれです:

file = new RandomAccessFile(path, "rw");
...
file.seek(file.length());
file.writeBytes("The data i want");

これを回避して正しいテキストを書くにはどうすればよいですか?

(PS: file.writeChars については知っていますが、別の方法があるかどうか疑問に思っています!)

4

3 に答える 3

1

ラテン文字の E (LATIN CAPITAL LETTER E) ではなく、ギリシャ文字の E (GREEK CAPITAL LETTER EPSILON) のことですか?

に加えてwriteChars()writeUTF8()同様に機能する方法があります。文字ごとに 2 バイトを書き込む代わりに、文字コードに応じて可変数のバイトを使用します。

ファイルはバイトを格納します。テキストは一連の文字です。Java では、acharは 2 バイトです。文字とバイトの間を変換する多くの方法のうちの 1 つを指定する必要があります。UTF-8 などの一部のメソッドは任意の文字を処理しますが、他の多くのメソッドはラテン語やキリル文字などの特定の文字サブセットのみを処理します。文字エンコーディングを選択し、後でファイルをデコードできるように、使用したものを追跡する必要があります。

于 2014-03-10T15:49:28.357 に答える
0

Java コードを UTF-8 にしたいとします。Unicode \unnnn を使用して文字をエンコードすると、任意の Unicode 文字を使用できます。

例をエンコードする方法は次のとおりです。

String spanish = "\u00E1\u00E9\u00ED\u00F3\u00FA";
System.out.println(spanish); // prints áéíóú
于 2014-03-10T15:42:24.323 に答える