0

出于某种原因,在某些情况下使用 string.split 会出现问题。它必须与文件的编码有关。但是,我确保在 Eclipse 中的 Encoding 下,它在所有情况下都显示为“Default MacRoman”——这是所有代码文件中使用的默认值。

然而,当我将一个字符串从我的一个 java 文件复制到另一个包含该字符串的文件时:

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

它们是有区别的。在第一个中,“”空间编码为 160,而在第二个中,它是 32。

因此,在使用 split 时,我必须确保使用正确编码的“”。

这就是我现在的做法——我认为不是很优雅。

wherelongText包含要拆分的文本

    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 不起作用

4

1 回答 1

0

160 是不间断空格字符的 Latin1(因此是 Unicode)代码点。它不同于普通的空间。

MacRoman 字符集在不同的代码点 (202) 上具有此功能。通常,要编辑 Java 源代码,您应该使用 Unicode 编码,例如 UTF-8。

于 2012-04-11T21:11:44.850 回答