簡體   English   中英

UTF-8字符中的字符常量無效

[英]Invalid character constant in a UTF-8 character

我試圖在Java程序中將'o͝'(語音字符)分配給Character,但是出現錯誤“ Invalid character constant”。 我的文件使用的是UTF-8,其他語音字符也可以正常工作,但不是這個。 看起來這個字符實際上是兩個(“ o”和一個連字或類似的東西),但我不能破壞它正在形成的部分。

代碼示例:

Character test = 'o͝';

任何幫助,將不勝感激。

該字形被稱為“ 結合了雙短號的小寫字母o”,從源頭上可以寫為:

String a = "\u006f\u035d";

由於它是一個組合字符(即, 兩個字符 ),因此無法將結果值分配給單個Java字符,因此需要使用String。

您可以嘗試在字符表上查找字符號,並將其分配給變量,例如:

char a = '\u0040';

如前所述,您不應該對這樣的字符進行硬編碼,而應該使用在此處找到的unicode點值:

http://www.utf8-chartable.de/

您想要的實際上涉及一個“組合字符”:

http://en.wikipedia.org/wiki/Combining_character

組合的變音標記為0x0300-0x036f。 因此,例如,要創建所需的字符(雙斜線“ o”),請使用:

String o_doubleBreve = "o\u035d";

打印為o͝

我同意上面的回答,在您碰巧編寫的任何新代碼中,最好都使用\\ u表示,但是會遇到帶有此問題的源代碼的項目,並且據說它們能夠編譯其代碼。 我現在正在使用的這樣一個示例是openNLP

那么,如果你遇到了這樣的事情,你看到的是,在像Eclipse的IDE中運行時,如果你遵循類似的程序這樣 ,您可以更改工作區默認表示為UTF-8。 這樣可以成功編譯代碼。

暫無
暫無

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

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