错误记录0607
今天碰到一个隐藏的问题,csv文件是utf-8bom的格式,导致第一列数据会多一个字符\uFEFF
,匹配的时候不相等。
csv文件以utf-8 bom 编码时,文件开头会多一个字符。
1 | 王2宝,Mike,王三宝 |
有个业务操作是需要根据第一行的人名去map中获取value,map的key是王2宝
,csv中读取到的乍一看去也2宝
,但就是获取不到值,其他的Mike
、王三宝
都已经正确保存,而且能查到。数据库中查询like '王%宝'
居然只查询到王三宝
,当时就惊呆了,怎么会只插入一部分,检查代码也没有查出来问题。然后用like '%宝'
居然查出来了,这是怎么回事。最后想到会不会是多了什么字符导致匹配不上。打印了一下王2宝
的长度,果然有问题,多了一个。调试的时候看了一下王2宝
的值,好家伙,前面有个\uFEFF
。
手动去掉多的这个字符就可以了。
1 | name = name.contains(Character.toString('\uFEFF')) ? new StringBuffer(name).deleteCharAt(name.indexOf('\uFEFF')).toString() |
有时候看起来一样的字符实际上不一样,出现这样的问题时,可以看一下每个字符的数值是不是一致
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 水娃火娃石榴娃!
评论