Android:如何删除汉字中的空格?

时间:2012-04-19 04:16:05

标签: java android character-encoding whitespace cjk

我在修剪汉字空格方面遇到了问题。我试着记录内容,这是它的样子:

Result

在textview中显示时,它会显示中文字符,但问题是字符串文本前后的空格。有人可以帮我编码/解码吗?提前谢谢。

编辑1:添加了结果的屏幕截图。

编辑2:在回复中添加了内容字符集。

HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);

但是我仍然在记录时获得方形字符,并且在XML布局中显示时,方形字符变为空格。

编辑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;
}

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

您可以使用Googles Guava库;

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

你可以在这里详细介绍:

How to properly trim whitespaces from a string in Java?

答案 2 :(得分:0)

修改具有2个字节的字符串替换的unicode中的空格。

用1byte空格替换2byte空间。 0x3000是unicode IDEOGRAPHIC SPACE的十六进制值

String.replace("\u3000"," ").trim()