JAVA中字符串前出现zwnbsp字符(零宽度空白字符)处理

问题出现的背景:

        程序在对外部的.csv文件进行解析操作时,第一列的属性名(A)无法进行匹配选择。而后面几列的属性名(B,C,D,E)可以正确匹配选择。

CSV文件

 

  程序代码块   

        280行的代码,无法选中数组[A,B,C,D,E]中的第一个元素A。找了许多资料都没有找到合理的解释,然后在IDEA中复制了 数组[A,B,C,D,E];惊奇地发现 数字A前面有个字符串ZWNBSP 

 问题的解决:

        通过进行了百度,通过查阅资料发现,ZWNBSP是"zero-width no-break space (ZWNBSP)"的字符。会以 “\UFEFF作为字符串的开头;因此就可以解释清楚为什么数组的第一个元素为什么匹配不上。只需要去掉 ZWNBSP即可正确的匹配

附上解决代码

public static final String UTF8_BOM="\uFEFF";
String rowMessage =header[j];
if(rowMessage.startsWith(UTF8_BOM)) {
    rowMessage=rowMessage.substring(1);
}

问题的出现原因:

         该CSV文件的编码格式是 带有UTF-8-BOM,它与我们常用的UTF-8编码格式不同;区别就是在有没有BOM。即文件的开头有没有 UFEFF。这样就会造成生成数组的第一个元素,无法进行判断匹配。

 

参考地址:

https://www.cnblogs.com/findumars/p/3620078.html

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值