簡體   English   中英

字符的java unicode值

[英]java unicode value of char

當我執行Collection.sort(List)時,它將基於String的compareTo()邏輯進行排序,在該邏輯中,將兩個字符串逐個字符進行比較。

    List<String> file1 = new ArrayList<String>();
    file1.add("1,7,zz");
    file1.add("11,2,xx");
    file1.add("331,5,yy");
    Collections.sort(file1);

我的理解是char表示它指定了unicode值,我想知道char的unicode值,例如,(逗號)等。我該怎么辦? 任何網址都包含這些網址的數值嗎?

我的理解是char表示它指定了unicode值,我想知道char的unicode值,例如,(逗號)等

好吧,有一個從charint的隱式轉換,您可以輕松地打印出來:

int value = ',';
System.out.println(value); // Prints 44

這是char的UTF-16代碼單元。 (如fge所述,Java中的char是UTF-16代碼單元,而不是Unicode字符。存在大於65535的Unicode代碼點,它們表示為兩個UTF-16代碼單元。)

任何網址都包含這些網址的數值嗎?

是-有關Unicode的更多信息,請訪問Unicode網站

嗯, char不是一個“ unicode值”(使用的單詞是Unicode code point )。

char是UTF-16編碼的代碼單元。 碰巧的是,在Unicode的基本多語言平面中(即,對於此范圍內定義的代碼點,Unicode代碼點的范圍從U + 0000到U + FFFF),是的,在char和Unicode之間存在char映射。

為了知道代碼點的數值 ,您可以執行以下操作:

System.out.println((int) myString.charAt(0));

但這不是BMP外部代碼點的情況。 對於這些,一個代碼點轉換為兩個字符。 請參見Character.toChars() 更一般而言, Character所有靜態方法都與代碼點有關。 有很多!

這也意味着String.length()實際上具有誤導性,因為它返回的是字符數, 而不是字素數。

帶有一個Unicode表情符號的演示(該頁面的第一個):

System.out.println(new String(Character.toChars(0x1f600)).length())

打印2 鑒於:

final String s = new String(Character.toChars(0x1f600));
System.out.println(s.codePointCount(0, s.length());

打印1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM