【问题标题】:Android : How to remove white spaces in Chinese characters?Android:如何去除汉字中的空格?
【发布时间】:2012-04-19 04:16:05
【问题描述】:

我在修剪汉字中的空格时遇到问题。我尝试记录内容,结果如下:

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

【问题讨论】:

    标签: java android character-encoding whitespace cjk


    【解决方案1】:

    中文和日文不使用常规空格字符' '。语言使用自己的与字符宽度相同的宽度。这是这里的字符' ',你应该编写一个手动修剪函数来检查字符串的开头和结尾的那个字符。

    如果您将代码文件转换为 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

    【讨论】:

      【解决方案2】:

      您可以为此使用 Google 的 Guava 库;

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

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

      How to properly trim whitespaces from a string in Java?

      【讨论】:

      • 问题是我怎么知道中文的空格字符?
      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-29
        • 2010-12-07
        • 2018-08-20
        • 2020-02-23
        • 1970-01-01
        • 2010-11-19
        相关资源
        最近更新 更多