2012-04-11 36 views
0

由於某些原因,在某些情況下使用string.split時會出現問題。它必須與文件的編碼有關。但是,我確信在Eclipse下的Encoding中,在所有情況下都會使用「Default MacRoman」 - 這是所有代碼文件中默認使用的。拆分和索引使用不同字符串編碼的問題

然而,當我從我的java文件拷貝一個字符串包含此字符串另一個問題:

"Test String" - while typing this string again "Test String" 

是有區別的。在第一個「」空間編碼爲160,而在第二個是32。

因此,當使用拆分我必須確保使用正確編碼的「」。

這就是我現在的做法 - 我覺得不是很優雅。

longText包含的文本被分割

char splitChar; 
    if (longText.indexOf((char) 32) > 0) { 
     splitChar = (char) 32; 
    } else 
     splitChar = (char) 160; 
    String splitCharString = String.format("%c", splitChar); 
    String[] tokens = longText.split(splitCharString); 

有沒有更好的方式來做到這一點?

PS只是明確地改變在Eclipse爲macroman文件的編碼不工作

回答

0

160是Latin1的(因此Unicode)的代碼點爲non-breaking space字符。它與正常空間不同。

MacRoman字符集在不同的代碼點(202)有這個。通常,爲了編輯Java源代碼,您應該使用Unicode編碼,例如UTF-8。