matlab中文顯示亂碼:控制台上的,編輯器的,圖片中的


問題:matlab腳本與函數文件的中文注釋顯示亂碼. 
環境:matlab R2016a.Windows 10 home. 
解決方案: 
step1 
檢查locale值 
matlab命令行鍵入命令 
feature(‘locale’) 

 

>> feature('locale')
ans = 
  包含以下字段的 struct:

               ctype: 'zh_CN.UTF-8'
             collate: 'zh_CN.UTF-8'
                time: 'zh_CN.UTF-8'
             numeric: 'en_US_POSIX.UTF-8'
            monetary: 'zh_CN.UTF-8'
            messages: 'zh_CN.UTF-8'
            encoding: 'UTF-8'
    terminalEncoding: 'UTF-8'
         jvmEncoding: 'UTF-8'
              status: 'MathWorks locale management system initialized.'
             warning: ''

 

 

 

注意: 
System locale設置 
控制面板Region,Administrative選項卡,Language for non-Unicode設置為Chinese(Simplified,China). 
step3 
確認效果. 
打開m文件,添加中文注釋,保存並重新打開確認中文顯示正常. 
注意: 
如果中文字符顯示?是亂碼問題,如果顯示方框則是字體顯示問題(比如使用西方字體顯示中文字體).可在matlab預設->字體選擇中文字體.matlab默認設置為Monospaced,如果系統沒有支持等寬字體的中文字體,中文字符會顯示方框.可以下載並安裝宋體-18030,該字體支持等寬字體. 
補充 
如果想以utf-8編碼,而不是GBK編碼的話,請編輯matlab的locale數據庫文件lcdata.xml(matlab bin目錄下). 
刪除 
< encoding name=”GBK”> 
< encoding_alias name=”936”> 
< /encoding>

並將 
< encoding name=”UTF-8”> 
< encoding_alias name=”utf8”/> 
< /encoding> 
改為< encoding name=”UTF-8”> 
< encoding_alias name=”utf8”/> 
< encoding_alias name=”GBK”/> 
< /encoding> 
重啟matlab之后,即以utf-8編碼. 
注意: 
常見的編碼格式 
• ascII編碼,別名ANSI,使用7個bit. 
• utf-8,可變長度,兼容ascII,中文字符占16個bit 
• utf-16,左右字符一律占16個bit 
• GB2312,簡體中文 
• GB5,繁體中文 
lcdata.xml修改locale tag不起作用,我猜測matlab硬編碼了locale列表,而不是查詢lcdata.xml.其內部的locale格式 
locale — Format: language_territory.codeset 
For example, for the U.S. English locale setting en_US.US-ASCII, en means that the display language is English. US indicates that time and date displays use U.S. conventions. US-ASCII is the coded character set (codeset) used to display text.

From https://www.mathworks.com/help/matlab/matlab_env/how-the-matlab-process-uses-locale-settings.html 
如果你的系統和用戶locale值均為zh_CN,則matlab查詢硬編碼存儲的locale列表定位到zh_CN.GBK,並使用GBK在lcdata.xml查詢codeset.

參考文獻 
• ISO-3166 Country Codes 
• ISO-639 Language Codes 
• Internationalization(matlab幫助) 
• How do I get my MATLAB editor to read UTF-8 characters? UTF-8 characters in blank squares in editors, but in the command window and workspace works fine.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM