我在修剪汉字空格方面遇到了问题。我试着记录内容,这是它的样子:
在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;
}
答案 0 :(得分:2)
中文和日文不使用常规空格字符''。这些语言使用自己的宽度与字符相同。这是''这里的字符,你应该编写一个手动修剪函数来检查字符串开头和结尾的那个字符。
如果将代码文件转换为unicode(如果java允许),您可以直接使用该字符。否则,您需要找到''的unicode字符代码,并检查字符代码是否在字符串的开头或结尾。
以下链接告诉我们,UTF-8中的表意空间为0xe38080,UTF-16中为0x3000,Java的Character.isSpaceChar()函数将返回true。我原以为String.trim()会使用这个属性来确定是否修剪。
答案 1 :(得分:1)
您可以使用Googles Guava库;
CharMatcher.inRange('\0', ' ').trimFrom(str);
你可以在这里详细介绍:
答案 2 :(得分:0)
修改具有2个字节的字符串替换的unicode中的空格。
用1byte空格替换2byte空间。 0x3000是unicode IDEOGRAPHIC SPACE的十六进制值
String.replace("\u3000"," ").trim()