今天編碼時遇到了一個問題,大致描述就是去讀取excel中的某列,如圖: 這些是文件名,類似一個對應關係表,然後代碼去查找對應的文件。 斷點調試出來的內容也是正常,但是都匹配不到(文件真實存在),在打出log時發現了端倪: 有些空格變成了問號。難道是我的打開方式不對麽。。。? 嘗試了幾種不同編碼打開, ...
今天編碼時遇到了一個問題,大致描述就是去讀取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