我試圖給Java程序中的字符賦予'o͝'(一個音標字符),但出現「無效的字符常量」錯誤。我的文件正在使用UTF-8和其他拼音字符正常工作,但不是這個。它看起來好像這個角色實際上是兩個(一個'o'和一個連字符或類似的東西),但我無法打破它正在形成的部分。UTF-8字符中的字符常量無效
代碼示例:
Character test = 'o͝';
任何幫助,將不勝感激。
我試圖給Java程序中的字符賦予'o͝'(一個音標字符),但出現「無效的字符常量」錯誤。我的文件正在使用UTF-8和其他拼音字符正常工作,但不是這個。它看起來好像這個角色實際上是兩個(一個'o'和一個連字符或類似的東西),但我無法打破它正在形成的部分。UTF-8字符中的字符常量無效
代碼示例:
Character test = 'o͝';
任何幫助,將不勝感激。
字形被稱爲「小字母O與combining double breve」,可以在源,寫成:
String a = "\u006f\u035d";
既然是組合字符(即兩個字符),所產生的價值不能被分配到一個單一的Java字符,你需要使用一個字符串。
你可以嘗試尋找在字符表中的字符數,將其賦值給變量,像:
char a = '\u0040';
這絕對是正確的選擇。在你的文字中直接加入模糊字符總是讓你置身於存儲你的代碼的文件系統以及編譯它的環境的擺佈中。\ uXXXX'轉義總是有效並且可以處理Unicode中的任何字符 – 2012-04-21 18:43:41
很可能是這樣的你「char」實際上是兩個,第二個是組合變音字符,所以你將不得不使用String a =「o͝」,或者用一個char型的int代碼點。 – 2012-04-21 18:47:55
是的,它看起來是一個組合變音字符,所以我無法在表格中找到組合字符。在使用十六進制編輯器並解碼UTF-8值後,我發現它們是U + 006F('o')和U + 035D(組合雙球面板)。謝謝。 – user936580 2012-04-21 18:56:04
前面已經說了,你不應該硬編碼的字符,如,你應該使用這裏找到unicode的點值:
你真正想要什麼涉及到一個「組合字符」:
http://en.wikipedia.org/wiki/Combining_character
組合變音標記是0x0300-0x036f。因此,例如,去創造你想要的(「O」雙桿菌)的字符,請使用:
String o_doubleBreve = "o\u035d";
打印爲Ø
第二個字符不應該是「\ u035d」嗎? – erikxiv 2012-04-21 18:56:34
謝謝你,我在你回覆的同時發現了它。而且,是的,它是U + 035D。 – user936580 2012-04-21 18:57:09
@erikxiv是的,謝謝,你說得對,我把utf-8的值與代碼點混在一起。編輯修復。 – 2012-04-21 18:59:13