4

次のプログラムを検討してください。

import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.Charset;

public class HelloWorld {

    public static void main(String[] args)  {       
        System.out.println(Charset.defaultCharset());
        char[] array = new char[3];
        array[0] = '\u0905';
        array[1] = '\u0905';
        array[2] = '\u0905';
        CharBuffer charBuffer = CharBuffer.wrap(array);
        Charset utf8 = Charset.forName("UTF-8");
        ByteBuffer encoded = utf8.encode(charBuffer);
        System.out.println(new String(encoded.array()));

    }
}

これをターミナルで実行すると、

java HelloWorld

適切にエンコードされ、整形されたテキストが得られます。デフォルトのエンコーディングはMacRoman.

Eclipse から同じコードを実行すると、間違ったテキストがコンソールに出力されます。

スクランブルされたテキストを表示する Eclipse コンソール

Eclipse のファイル エンコーディング オプションを に変更すると、EclipseUTF-8で正しい結果が出力されます。

なぜこれが起こるのだろうか?ここでは明示的に UTF-8 を使用しているため、理想的には、ファイル エンコーディング オプションがこのコードに影響を与えるべきではありません。

なぜこれが起こっているのですか?

Java 1.6 (Sun JDK)、Mac OSx 10.7 を使用しています。

4

5 に答える 5

0

コンソールの実行構成を変更する必要があります。

  • 「実行」をクリック
  • 「実行構成」をクリックし、「共通」タブをクリックします
  • エンコーディングをUTFに変更 ここに画像の説明を入力
于 2013-06-18T17:11:31.940 に答える