matlab处理中文路径
https://www.douban.com/note/387532266/
matlab讀取文本文件很方便,textread,textscan等就能搞定。如果整個文件僅包含數(shù)字,則有更方便的命令"load".
但是一旦文件包含中文,則往往讀出來的是亂碼。
經(jīng)過搜索測試,發(fā)現(xiàn)救命稻草:指定編碼格式的fopen命令。原文:http://www.ilovematlab.cn/thread-160275-1-1.html
fileID = fopen(filename, permission, machineformat, encoding)
machineformat默認(rèn)為'n',='native'
encoding就是編碼。要想正確讀取,需要保證文件保存時的編碼格式與讀取所用的編碼格式相同。漢字常用的是UTF-8,其他還有Big5,GBK等。
如果不確定保存時所用的編碼,則可采用'r+'作為permission參數(shù),據(jù)說會采用默認(rèn)的文本編碼格式。
fid=fopen('filename','r+','n','utf-8');
tline=fgetl(fid);
while tline
??tline=fgetl(fid);
fclose(fid)
即能逐行讀入整個文本文件。
不過,上述方法有可能出現(xiàn)無限循環(huán),原因可能是沒有正確識別文件終止符;并且字符串前可能多出"?". 經(jīng)測試,native2unicode命令可解決此問題。以下代碼能夠正確輸出整個文件并終止:
fid=fopen('filename','r+','n','utf-8');
tline=fgetl(fid);
tline=native2unicode(tline);
while tline
????tline=fgetl(fid);
????tline = native2unicode(tline);
????disp(tline);
end
fclose(fid);
更多測試或細節(jié)待補充。
補充1:將permission設(shè)置為'r+'并不能識別未知編碼的文本文件。對于未知編碼的文件,一個簡單的方法是利用記事本打開,然后另存為。。。,選擇utf-8編碼,即可保證保存與讀取的編碼統(tǒng)一。
補充2:看到一段:(中文)Windows系統(tǒng)默認(rèn)字符編碼是GBK(稱為系統(tǒng)內(nèi)碼),所有的文字都使用GBK顯示!保存的時候?qū)催x擇的字符編碼進行編碼轉(zhuǎn)換(系統(tǒng)內(nèi)嘛-->指定編碼)。復(fù)制的時候所有的文字編碼也都是系統(tǒng)內(nèi)碼。
補充3:fopen所支持的編碼列表:http://www.mathworks.se/help/matlab/ref/fopen.html#inputarg_encodingIn
總結(jié)
以上是生活随笔為你收集整理的matlab处理中文路径的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 镶在桌子里的电脑电脑镶嵌在桌子里
- 下一篇: RNN循环神经网络概述