问题:过去一直使用的是r2024b的版本,今天需要用r2018b的版本适配win7的系统。但是在r2018b的版本中所有中文出现了乱码现象,怀疑是编码规则的问题。
解决途径:参考https://blog.ericzhuochen.com/post/matlab-utf8/
网上很容易搜到,在 Matlab 的命令行中可以使用 feature('locale')
命令来查看当前的编码方式。
结果如下:
![](https://i-blog.csdnimg.cn/direct/e81641c9e3f345658aaebf0ab0ae2648.png)
证明 r2018b使用的是GBK编码规则。
解决办法:打开软件的bin文件夹。在此目录下,会有两个文件lcdata.xml
和 lcdata_utf8.xml。
其中 lcdata.xml
决定了 Matlab 的编码方式,而 lcdata_utf8.xml
似乎是一个不生效,但是专门用来替代 lcdata.xml
的文件。
首先,把 lcdata.xml
重命名为 lcdata_old.xml
,即把它备份一份,防止以后要用到。然后,把 lcdata_utf8.xml
复制一份,就叫做 lcdata.xml
,并且打开它,作出一些改动。首先要删掉关于 GBK 的这一部分:
XML
<encoding name="GBK'>
<encoding_alias name="936"/>
</encoding>
然后,改动一下关于 UTF-8 的部分,高亮的那一行是新加入的内容:
XML
<encoding name="UTF-8">
<encoding_alias name="utf8"/>
<encoding_alias name="GBK"/>
</encoding>
这么做的目的就是,将 GBK 编码从一种独立的编码方式,改成了 UTF-8 的一个别名,从而欺骗 Matlab,让它使用 UTF-8。虽然很不优雅,但是真的有用。
重启 Matlab 之后,乱码的中文应该就不再乱码了。但是仍然存在问题:某些汉字仍然会以方块的形式显示。