2017-05-07 10 views
2

1)文字列内の上位および下位のサロゲート文字順は固定されていますか?私はそれに頼ることができますか? Windows上で実験的にhighSurrogateはStringに最初に入ります(String.charAt(int index)の点ではより低いインデックス)。これはどのプラットフォーム(Linuxなど)でも常にそうですか?これは文書化されていますか?高位のサロゲート・キャラクタは、常に文字列内で最初に(下位のインデックスに)移動しますか?

int[] codePoint = { 0x1F71D }; 
    String s = new String(codePoint, 0, 1); 
    System.out.println(s.length()); // 2 
    System.out.println(s); // 

    System.out.println((int) Character.highSurrogate(codePoint[0])); 
    System.out.println((int) Character.lowSurrogate(codePoint[0])); 

    System.out.println((int) s.charAt(0)); // highSurrogate 
    System.out.println((int) s.charAt(1)); // lowSurrogate 

2)に加えて、私は少し混乱しています:高/低サロゲートcodeunit順序とエンディアンとの間のcorellationがありますか?私は何もコアリングはないと思いますが、これらの2つの概念は直交していますか?

答えて

0

UTF-8では、サロゲート・インジケータが2番目の文字の前にあることが要求されています。そのため、Javaの仕組みになります。エンディアンはバイトオーダーであり、charオーダーではありません。 JVM仕様では、クラスファイル形式のエンディアンを指定しています。実行時のエンディアンは、基本となる物理プラットフォームによって指定されます。いくつかの検索エンジン時間はあなたに詳細を与えます。 http://www.unicode.org/ https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html

関連する問題