4

我在修剪汉字中的空格时遇到问题。我试图记录内容,这是它的样子:

结果

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

您可以为此使用 Googles Guava 库;

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

您可以在此处参考更多信息:

如何在 Java 中正确修剪字符串中的空格?

于 2012-04-19T04:28:09.447 回答
0

要修剪具有 2 字节的 unicode 中的空格,请使用字符串替换。

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

String.replace("\u3000"," ").trim()
于 2013-09-20T07:32:19.127 回答