授人以渔--解决Matlab中文乱码

本文分析了macOSMatlab中文乱码的原因,区别于网上很多不通用的方案,对于个人的不同情况能有对应的解决方案,希望能对你有所帮助。

1. 背景

  • 系统:OS X EI Captian 10.11.6
  • 语言与地区设置:简体中文、中国香港
  • 问题:Matlab中文路径、中文注释、中文字符串等保存后都是乱码。

2. 解决

直接百度Matlab中文乱码,给出的很多解决方案都是说给把Matlab安装目录下bin文件夹里的lcdata.xml
里的

1
<locale name="zh_CN" encoding="GB2312" xpg_name="zh_CN.GB2312">

改成

1
<locale name="zh_CN" encoding="UTF-8" xpg_name="zh_CN.UTF-8">

但是这并不能解决所有人的遇到的情况。像我的电脑就不能解决。于是我们需要掌握更具普遍性的解决方案。

首先,我们要知道,出现乱码的情况肯定是由于编码的问题。Matlab启动是会根据电脑设置的语言和地区来选择编码。
我们可以打开Matlab安装目录下的bin/lcdata.xml来看看。在Mac里的话,就是在应用程序里找到Matlab–右键–显示包内容–bin–lcdata.xml。
打开后我们可以看到这样的条目。
xml

2.1 获取地区

易得,locale name指的是地区名,encoding指的是编码。那么,怎么才能获取Matlab当前的编码呢?
在Matlab的命令窗口里输入:feature('locale')
就可以得到如下的结果:

1
2
3
4
5
6
7
8
9
10
11
12
ans =
ctype: 'zh_HK.UTF-8'
collate: 'zh_HK.UTF-8'
time: 'zh_HK.UTF-8'
numeric: 'en_US_POSIX.UTF-8'
monetary: 'zh_HK.UTF-8'
messages: 'en_US.UTF-8'
encoding: 'UTF-8'
terminalEncoding: 'UTF-8'
jvmEncoding: 'UTF-8'
status: 'MathWorks locale management system initialized.'
warning: ''

这里的ctype就是我们需要的。且从这可以明显看出我的地区设置的是zh_HK.注意我这里的ctype是改过的,所以显示的是zh_HK.UTF-8。
然后你就可以在lcdata里搜索你的ctype。例如我这里需要搜索的是zh_Hk

2.2 修改编码

假设我的地区设置的是台湾,然后获得的ctype显示的是zh_TW.Big5,那我就需要搜索zh_TW,获取的结果如下

1
2
3
<locale name="zh_TW" encoding="Big5" xpg_name="zh_TW.Big5">
<alias name="zh-Hant"/>
</locale>

修改成

1
2
3
<locale name="zh_TW" encoding="UTF-8" xpg_name="zh_TW.UTF-8">
<alias name="zh-Hant"/>
</locale>

保存退出。这里你可能没有文件的修改权限,至于如何添加用户对文件的修改权限就不再赘述了。如果用的是vim打开的话直接w!就好了。

2.3 检验

重启matlab。现在应该就能支持中文路径了。至于之前保存的中文是乱码,现在可能还是乱码。不过现在改成中文之后再打开,中文也不会变成?或者其他乱码了。就酱。