2012-04-11 37 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。