2012-04-21 98 views
1

我試圖給Java程序中的字符賦予'o͝'(一個音標字符),但出現「無效的字符常量」錯誤。我的文件正在使用UTF-8和其他拼音字符正常工作,但不是這個。它看起來好像這個角色實際上是兩個(一個'o'和一個連字符或類似的東西),但我無法打破它正在形成的部分。UTF-8字符中的字符常量無效

代碼示例:

Character test = 'o͝'; 

任何幫助,將不勝感激。

回答

4

字形被稱爲「小字母O與combining double breve」,可以在源,寫成:

String a = "\u006f\u035d"; 

既然是組合字符(即兩個字符),所產生的價值不能被分配到一個單一的Java字符,你需要使用一個字符串。

+1

第二個字符不應該是「\ u035d」嗎? – erikxiv 2012-04-21 18:56:34

+0

謝謝你,我在你回覆的同時發現了它。而且,是的,它是U + 035D。 – user936580 2012-04-21 18:57:09

+0

@erikxiv是的,謝謝,你說得對,我把utf-8的值與代碼點混在一起。編輯修復。 – 2012-04-21 18:59:13

2

你可以嘗試尋找在字符表中的字符數,將其賦值給變量,像:

char a = '\u0040'; 
+0

這絕對是正確的選擇。在你的文字中直接加入模糊字符總是讓你置身於存儲你的代碼的文件系統以及編譯它的環境的擺佈中。\ uXXXX'轉義總是有效並且可以處理Unicode中的任何字符 – 2012-04-21 18:43:41

+0

很可能是這樣的你「char」實際上是兩個,第二個是組合變音字符,所以你將不得不使用String a =「o͝」,或者用一個char型的int代碼點。 – 2012-04-21 18:47:55

+0

是的,它看起來是一個組合變音字符,所以我無法在表格中找到組合字符。在使用十六進制編輯器並解碼UTF-8值後,我發現它們是U + 006F('o')和U + 035D(組合雙球面板)。謝謝。 – user936580 2012-04-21 18:56:04

0

我上述的答案同意給予帶有\ U表示是最好的任何新的代碼,你碰巧寫,但是會遇到與源代碼有這個問題的項目和據說他們能夠編譯他們的代碼。我現在使用的一個這樣的例子是openNLP

好吧,如果遇到類似這樣的情況,您會發現如果按照this之類的過程在IDE等IDE中運行,則可以將工作空間默認表示更改爲UTF-8。這將允許成功編譯代碼。