CSV文件读取文件表头字符串含ZWNBSP(零宽度空白字符)
1、问题描述
在导入csv数据格式文件时,发现读取的key存在,但是读取不到值。
坑的是之前是Unity2018没问题的,升级到Unity2022就有问题,也不清楚为什么,但是升级Unity本来就会有奇葩问题,懒得追究了。
csv数据格式如下:
id,file,name
1001,localization_CN,简体中文
1002,localization_CN,英语
打断点调试发现字典了确实有key为id的值,但是读取返回的就是空字符串。
2、问题解析
一调试发现,id前面多了字符串 ZWNBSP,也就是不可见的空白字符,知道问题就好解决了。
UTF-8-BOM的文件会带有这个头字符串,用来标记文件格式。
ZWNBSP是"zero-width no-break space (ZWNBSP)"的字符。会以 “\UFEFF”作为字符串的开头;
看了下文件格式,确实是带有BOM格式了。
3、问题解决
知道问题就好解决了,有两个方法:
- 将文件格式改成不带BOM的UTF-8,不推荐因为不保证其他人员不会搞错
- 将带有BOM的头字符串从代码上去除,推荐这种方式
匹配ZWNBSP的字符串是“\UFEFF”,我们代码上去除就行了。
text = text.Replace("\uFEFF", "");//去除ZWNBSP