3
4

2 に答える 2

3

なぜ違うの?表意文字または単語全体を並べ替えるには、いくつかの異なる方法があるためです。私の心に残っているのは:

  • ストローク数による
  • ラテン語の音訳を使用し、それを「自然に」注文する(もちろん、中国語に固有の規則に従って)

他の方法もあります。たとえば、Unicodeテクニカルレポート#35には、それらのいくつかが記載されています(偶然の一致であり、意図的に必要ではありません)が、それを実行するには十分な時間が必要です。

質問に答えるために、これらの並べ替え順序が異なる理由については、Javaに独自の照合ルールが含まれており、(Excelのように)オペレーティングシステムのルールに依存していないためです。これらのルールは異なる場合があります。また、JavaのクラスとルールのソースであるICUを試してみることもできます(通常、JDKよりも一歩進んでいます)。

于 2012-11-08T20:15:40.790 に答える
3

Java 6 または 7 には、中国語を最初のサンプルと同じ順序でソートする Collat​​or はありません。

public static void main(String... args) {
    String text1 = "啊<波<词<的<俄<佛<歌<和<及<课<了<馍<呢<票<气<日<四<特<瓦<喜<以<只";
    findLocaleForSortedOrder(text1);
    String text2 = "啊<波<词<的<俄<佛<歌<和<及<课<了<呢<票<气<日<四<特<瓦<喜<以<只<馍";
    findLocaleForSortedOrder(text2);
}

private static void findLocaleForSortedOrder(String text) {
    System.out.println("For " + text + " found...");
    String[] preSorted = text.split("<");
    for (Locale locale : Collator.getAvailableLocales()) {
        String[] sorted = preSorted.clone();
        Arrays.sort(sorted, Collator.getInstance(locale));
        if (Arrays.equals(preSorted, sorted))
            System.out.println("Locale " + locale + " has the same sorted order");
    }
    System.out.println();
}

版画

For 啊&lt;波&lt;词&lt;的&lt;俄&lt;佛&lt;歌&lt;和&lt;及&lt;课&lt;了&lt;馍&lt;呢&lt;票&lt;气&lt;日&lt;四&lt;特&lt;瓦&lt;喜&lt;以&lt;只 found...

For 啊&lt;波&lt;词&lt;的&lt;俄&lt;佛&lt;歌&lt;和&lt;及&lt;课&lt;了&lt;呢&lt;票&lt;气&lt;日&lt;四&lt;特&lt;瓦&lt;喜&lt;以&lt;只&lt;馍 found...
Locale zh_CN has the same sorted order
Locale zh has the same sorted order
Locale zh_SG has the same sorted order
于 2012-11-08T09:30:43.177 に答える