4

漢字の空白のトリミングに問題があります。コンテンツをログに記録しようとしましたが、次のようになります。

結果

テキストビューで表示すると漢字が表示されますが、問題は文字列テキストの前後の空白です。誰かがこれをエンコード/デコードするのを手伝ってくれますか? 前もって感謝します。

編集 1:結果のスクリーンショットを追加しました。

編集 2:応答でコンテンツ文字セットを追加しました。

HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);

しかし、ログに記録するときにまだ四角い文字が表示され、XML レイアウトで表示すると、四角い文字が空白になります。

EDIT 3:私の実用的なソリューションを追加しました。

    private String removeWhiteSpace(String oldString) {
    String newString = null;
    if (oldString.length() > 0) {
        Character c = oldString.charAt(0);

        boolean isWhiteSpace = Character.isWhitespace(c);                           
        if (isWhiteSpace) {
            newString = oldString.replace(c, ' ');
        } else {
            newString = oldString;
        }

        newString = newString.trim();
    }
    return newString;
}
4

3 に答える 3

2

中国語と日本語は、通常のスペース文字「 」を使用しません。言語は、文字と同じ幅の独自のものを使用します。これは ' ' の文字です。文字列の最初と最後にある文字をチェックするには、手動のトリム関数を作成する必要があります。

コード ファイルを Unicode に変換すると、文字を直接使用できる場合があります (Java で許可されている場合)。それ以外の場合は、' ' の Unicode 文字コードを見つけて、文字コードが文字列の先頭または末尾にあるかどうかを確認する必要があります。

次のリンクは、表意文字スペースが UTF-8 では 0xe38080、UTF-16 では 0x3000 であり、Java の Character.isSpaceChar() 関数が true を返すことを示しています。String.trim() がこのプロパティを使用して、トリミングするかどうかを決定すると思いました。

http://www.fileformat.info/info/unicode/char/3000/index.htm

于 2012-04-19T04:28:00.737 に答える
1

これには Google の Guava ライブラリを使用できます。

CharMatcher.inRange('\0', ' ').trimFrom(str);

詳細については、こちらを参照してください。

Javaで文字列から空白を適切にトリミングするには?

于 2012-04-19T04:28:09.447 に答える