今天编码时遇到了一个问题,大致描述就是去读取excel中的某列,如图:
这些是文件名,类似一个对应关系表,然后代码去查找对应的文件。
断点调试出来的内容也是正常,但是都匹配不到(文件真实存在),在打出log时发现了端倪:
有些空格变成了问号。难道是我的打开方式不对么。。。?
尝试了几种不同编码打开,问题依然存在,个人感觉因为这个文件写入时就已经含有了这个特殊字符。只不过显示时候还是空格。
既然打开方式不影响的话,那么是否可以把问号替换成空格。直接写Replace(?, " ") 这样是不起作用的。所以还是需要先转码。
最终解决方案为:
byte[] space = new byte[] { 0xc2, 0xa0 };
string UTFSpace = Encoding.GetEncoding("UTF-8").GetString(space);
name = name.Replace(UTFSpace, " ");
问题参考:http://blog.csdn.net/wuhongyao3/article/details/5834921