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