2012-04-19 11 views
4

中国語の空白を切り抜く際に問題があります。私は、コンテンツを記録しようとしましたが、ここではそれがどのように見えるかです:Android:漢字で空白を削除するには?

Result

のTextViewでそれを表示する場合、それは中国の文字を表示しますが、問題は、前と文字列テキストの後に空白をです。誰かが私にこれをエンコード/デコードするのを助けることができますか?前もって感謝します。

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

EDIT 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; 
} 

答えて

1

中国語と日本語では空白文字 ''を使用しません。言語は、文字と同じ幅の独自のものを使用します。これはここの文字です。文字列の始めと終わりにその文字があるかどうかを確認する手動トリム関数を記述する必要があります。

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

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

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

1

あなたはこのためにグーグルグアバライブラリを使用することができます。

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

あなたはここでこれについての詳細を参照することができます。

How to properly trim whitespaces from a string in Java?

+0

問題は中国語の空白文字をどのように知るかです。 – exception01

0

は、2バイトの使用文字列を置換したされたUnicodeでの空白をトリムするには。

2バイトスペースを1バイトスペースに置き換えます。 0x3000はユニコードの16進数です。IDEOGRAPHIC SPACE

String.replace("\u3000"," ").trim() 
関連する問題