最近的一起生产故障中产品经理反映自己添加的超链接不能生效。链接内容如下:
您好!XX客服系统很高兴为您服务!欢迎进入<a href="https://discount.csdn.com/">打折专区</a>购买商品!
没有发现异常,于是就甩锅给前端同学,前端同学排查后发现的确不能正确解析链接,经常尝试发现,a和href之间的空格不正常,删除后用键盘输入空格,便可以正常解析链接。于是,锅还是甩回到我这里,我就推断应该是存在特殊字符导致链接失效,将链接内容拷贝到Notepad++中,选中"视图-显示符号-显示所有符号",显示如下:
将a和href之间的内容删除,用键盘输入空格后,显示如下:
细心的同学会发现此时a和href之间出现一个红点,代表a和href之间是空格(ASCII码为32),a和href之间必须是ASCII码为32的空格才能将对应的内容解析为超链接。
现在已经确定a和href之间的内容不是键盘输入的空格了,到底是什么特殊字符呢。
把这个特殊字符拷贝到IDE中测试:
char c = ' ';
System.out.println((int) c);
结果输出160,表示该字符对应的Unicode码(java中char对应的是Unicode码,占用两个字节)为\u00A0(十六进制,对应的十进制为160),其实该字符对应的是Html中的空格:
温馨提示:
以后遇到解析失败的文本,应先在Notepad++(视图-显示符号-显示所有符号)上查看,若发现特殊字符,则通过编程工具计算其对应的Unicode码。