このプログラムを実行すると、「?」が表示されます。Unicodeコードポイントの場合\u0508。これは、CP-1252をエンコードするデフォルトのWindows文字がこのコードポイントをマップできないためです。
しかし、このファイルをEclipseに「テキストファイルエンコーディング」= UTF-8として保存し、このプログラムを実行すると、正しい出力ACが得られます。
なぜこれが機能するのですか?つまり、JavaファイルはUTF-8として保存されますが、基盤となるWindowsOSエンコーディングはCP-1252です。私の質問は、元々UTF-8で書かれたUTF-16のテキストファイルを読み込もうとすると、出力がさまざまなボックス記号で奇妙になっているのと似ています。
public class e {
public static void main(String[] args) {
System.out.println(System.getProperty("file.encoding"));
String original = new String("A" + "\u0508" + "C");
try {
System.out.println("original = " + original);
} catch (Exception e) {
e.printStackTrace();
}
}
}