2012-03-06 104 views
1

我有一個表格,用戶輸入中文/日文字符,然後將其與聲明值進行比較。問題是即使輸入和聲明值相同也不相等。中文或日文字符串比較

諸如variableA = "官話"之類的硬編碼變量不等於表單輸入文本。當它被打印時,它顯示"官話"

即使它們的長度不相等! new String("官話").length();不等於
formInputtedCharacter.length();,其中當打印的輸入是 「官話」(UTF-8已經)

怎麼會這樣?

回答

3

最有可能的原因(如果您確定表單數據處理正確)是Java編譯器在處理文字時使用了錯誤的編碼。確保它使用與編輯源代碼相同的編碼。

1

Java字符串使用UTF-16其是24字節長的映射到在Unicode字符集的字符來表示。

似乎有官話或字符編碼問題的兩個不同的Unicode字符。也許一箇中國人和一個日本人的角色看起來看起來相同或相似?如果有兩個不同的unicode字符,則會有兩個不同的字節表示。因此它們在Java中並不相似。