Java去掉Unicode特殊字符

开发环境(蓝色粗体字为特别注意内容)
1、软件环境: Win7 Ultimate sp1、jdk8u11
2、参考文献:https://blog.csdn.net/tian330726/article/details/50906318

最近在忙着找工作,竟然把写博客的大事给荒废了~~~
今天手头上的项目遇到一个小问题,正好来简单记录一下。问题是这样的,在使用Java进行字符串处理的时候,发现输出的文本中出现异常字符,该字符在UTF-8下面显示“?”。

将以上内容在这个网站https://www.sojson.com/ascii.html转成ASCII编码,发现也是“?”,说明Java代码将文本内容写入文件的时候就成了"?",于是debug一下java代码,果然,发现猫腻。

字符串后面竟然有个小空格?? 将以上内容贴到ASCII转码网站,查看该空格的ASCII编码,

\u00a0应该属于unicode编码的空格,用trim()函数无法去掉的。于是根据参考文献的思路,用replaceAll正则表达式去掉该空格,函数如下:

    private String repSpace(String src){
        return src.replaceAll("[\\pZ]", "");
    }
\pP 其中的小写 p 是 property 的意思,表示 Unicode 属性,用于 Unicode 正表达式的前缀。

大写 P 表示 Unicode 字符集七个字符属性之一:标点字符。
其他六个是
L:字母;
M:标记符号(一般不会单独出现);
Z:分隔符(比如空格、换行等);
S:符号(比如数学符号、货币符号等);
N:数字(比如阿拉伯数字、罗马数字等);
C:其他字符

效果如下:

完美去掉了unicode分隔符!

发布了290 篇原创文章 · 获赞 163 · 访问量 46万+

猜你喜欢

转载自blog.csdn.net/pang9998/article/details/101169998