0

何らかの理由で、特定の場合にstring.splitの使用に問題があります。それはファイルのエンコーディングと関係があるに違いありません。ただし、EclipseのEncodingで、すべての場合に「Default MacRoman」と表示されていることを確認しました。これは、すべてのコードファイルで使用されるデフォルトです。

それでも、Javaファイルの1つからこの文字列を含む別のファイルに文字列をコピーすると、次のようになります。

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

違いがあります。最初の「」スペースは160としてコード化され、2番目のスペースは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);

これを行うためのより良い方法はありますか?

psEclipseのファイルのエンコーディングをMacRomanに明示的に変更するだけでは機能しません

4

1 に答える 1

0

160は、ノーブレークスペース文字のLatin1(したがってUnicode)コードポイントです。通常の空間とは異なります。

MacRoman文字セットには、別のコードポイント(202)にこれがあります。一般に、Javaソースを編集するには、UTF-8などのUnicodeエンコーディングを使用する必要があります。

于 2012-04-11T21:11:44.850 に答える