美文网首页
MATLAB与Git的恩怨(谈编码格式)

MATLAB与Git的恩怨(谈编码格式)

作者: 遥远的清平湾 | 来源:发表于2019-10-17 15:11 被阅读0次

    [原创,禁止转载。仅为个人理解,不正确之处欢迎讨论。]

    从编码格式说起

    Windows下MATLAB的.m文件默认采用GBK格式编码保存,这可以通过MATLAB里运行feature('locale')代码查看。
    例如运行结果如下:

    feature('locale')语句运行结果

    GBK可以理解为中国特色社会主义编码,即为中国而量身打造的,那么它的通用性就不如UTF-8好。例如很多软件可能支持UTF-8,不支持GBK。这时用其他软件(例如Git管理工具GitKraken,代码编写工具VSCode)查看.m文件时就会出现中文乱码的问题。
    例如这样:


    GitKraken中乱码问题

    解决方案

    既然GBK不如UTF-8通用性好,那么自然而然我们就想到了让MATLAB以UTF-8编码格式保存和打开文件。
    操作如下:

    • 找到MATLAB安装目录(例如我的D:\Program Files\MATLAB\R2019a\bin)下的lcdata.xml文件

    • lcdata.xml文件内都是注释(MATLAB 2016b即以上),则删除该文件。然后将该目录下的lcdata_utf8.xml文件改名为lcdata.xml

    • 打开lcdata.xml文件,该文件整体分为两部分:

      image.png
    • lcdata.xml文件的Codeset entry部分找到以 <encoding name="GB18030"/><encoding name="GB2312" compat="GBK"><encoding name="GBK">开头的部分并删除(或注释掉),例如为

      image.png
    • 找到以<encoding name="UTF-8">开头的部分,在其中加入<encoding_alias name="GBK"/>以及GB2312,GB18030,EUC-CN,euccn,936等别名,例如:

      image.png
    • 重启MATLAB,新建的文件即以UTF-8保存。

    原理分析

    MATLAB在中文Windows系统上默认采用GBK编码,那么我们在上面的配置文件里把名字叫GBK的部分从Codeset entry里的删了,并且在<encoding name="UTF-8">里加入<encoding_alias name="GBK"/>,意思是UTF-8的别名也叫GBK了。那么MATLAB在找GBK的时候,实际上找的是UTF-8,这样就按照UTF-8保存和打开文件了。

    另外比较蛋疼的是,这么改完之后,MATLAB建立的文件用其他软件打开没有问题了,但是,MATLAB打开它以前用GBK格式保存的.m文件时,乱码了,码了,了。这个问题的解决方法是可以用文本文档、notepad++等软件打开,然后全选复制到MATLAB中(新建一个.m文件),再保存覆盖之前的老文件即可。或者用notepad++可以直接将GBK、GB2312等格式转为UTF-8格式。

    关于机器学习、算法、Python、计算机等更多内容,请关注微信公众号:

    学无止境也

    相关文章

      网友评论

          本文标题:MATLAB与Git的恩怨(谈编码格式)

          本文链接:https://www.haomeiwen.com/subject/vdommctx.html