1 问题描述

MATLAB R2019a 打开他人 .m 文件在MATLAB编辑器中文全为乱码,在安装目录 bin 文件夹下更改 lccdata.xml 后无乱码,但是输出绘图和命令行仍是乱码。

image-20250106092211055

2 解决方案

2.1 针对在 MATLAB 编辑器打开出现乱码分析

推测为编码方式出现问题,实际上也是编码方式的问题

1、查看现在编码方式

在命令行输入:

1
feature('locale')

查看输出为:

image-20250106092323944

或者输入:

1
slCharacterEncoding()

输出为:

image-20250106092439896

可以看到编码方式为 GBK

2、第三方编辑器打开

而在第三方编辑器中打开.m文件不会出现乱码且编码方式为 ‘UTF-8'

image-20250106092738918

3、(无效)尝试修改编码方式从 'GBK' 到 'UTF-8',在命令行输入

1
slCharacterEncoding('UTF-8')

输入:

1
slCharacterEncoding()

输出为:

image-20250106093203886

但是乱码未解决

4、(无效)重启MALAB后仍然乱码

image-20250106093623181

且输入 slCharacterEncoding() 后仍然显示为 'GBK'

2.2 针对在 MATLAB 编辑器打开出现乱码解决

通过修改安装目录 bin 文件夹下的 lcdata.xml ,达到让 MATLAB 编辑器将 'GBK' 重定向为 'UTF-8' 的效果

1、打开安装目录 bin 文件夹,找到对应文件

关注 'lcdata.xml' 和 'lcdata_utf8.xml' 两个文件

将 'lcdata.xml' 、'lcdata_utf8.xml' 分别重命名为 'lcdata_backup.xml'、'lcdata_utf8_backup.xml' 进行备份,

再复制一份原 'lcdata_utf8.xml' ,将其重命名为 'lcdata.xml'

2、修改 'lcdata.xml'

打开 'lcdata.xml' 找到 'GBK' 和 'UTF-8' 字段

(1)‘GBK’ 对应字段删除

定位到‘GBK’ 对应字段,删去

1
2
3
<encoding name="GBK">
<encoding_alias name="936"/>
</encoding>

(2)'UTF-8' 对应字段修改

定位到 'UTF-8' 对应字段

1
2
3
<encoding name="UTF-8">
<encoding_alias name="utf8"/>
</encoding>

修改为:

1
2
3
4
<encoding name="UTF-8">
<encoding_alias name="utf8"/>
<encoding_alias name="GBK"/>
</encoding>

通过这样的修改,可以使 MATLAB 编辑器将 'GBK' 重定向为 'UTF-8'

3、重新打开 MATLAB 编辑器验证

观察到中文显示正常

image-20250106095427859

2.3 针对命令行输出和绘图乱码问题分析

编辑器解决乱码后命令行输出和绘图界面仍然乱码,修改字体也无效后,通过添加启动脚本设置编码方式解决

image-20250106095542145
image-20250106095627761

观察到 feature('locale') 的输出为:

image-20250106092323944

可以看到终端仍为 'GBK' 编码,尝试修改系统终端默认编码

2、(无效)修改系统终端编码

(1)cmd 打开终端,未修改前为 'GBK',现在通过重设时区的方式修改为 'UTF-8'

image-20250106101041345

(2)打开‘控制面板’->‘区域’

image-20250106101212227

(3)打开‘管理’->‘更改系统区域设置’

勾选 'Beta 版:使用Unicode UTF-8',重启

image-20250106101312657

(4)打开 MATLAB 仍然乱码

3、(无效)MATLAB更改支持中文的字体

(1)打开 '主页'->‘预设’

image-20250106101552140

(2)找到 '字体' -> ‘自定义’ ->‘命令行窗口’->‘自定义’

修改字体为支持中文的字体,如'宋体'

image-20250106101802417

(3)仍然无法解决乱码

2.4 针对命令行输出和绘图乱码问题解决

通过启动时运行脚本 'startup.m' 解决

1、在MATLAB安装目录之外新建文件夹,如下:

D:

2、新建启动脚本'startup.m'

启动脚本'startup.m'名字不要更改

官网描述如下:

startup 在启动 MATLAB® 时执行用户指定的命令。MATLAB 执行搜索路径中名为 startup 且具有可执行文件扩展名的任何文件。可执行文件扩展名的示例有 .m.mlx.mlapp

userpath 文件夹中创建一个 startup.m 文件,该文件夹位于 MATLAB 搜索路径上。添加希望在启动时执行的命令。例如,您的代码可以包含物理常量、图形属性的默认值、工程换算因子或者您想要在工作区中预定义的任何其他内容

image-20250106103052242

3、在启动脚本中编写

1
2
feature('DefaultCharacterSet','UTF-8');
feature('DefaultCharacterSet','UTF-8');

不知什么原因feature('DefaultCharacterSet','UTF-8');输入了两次才有效果

4、在 MATLAB中 添加启动脚本路径

'主页' -> '设置路径'

image-20250106103155428

‘添加文件夹’ ->D:(脚本路径)

image-20250106103250304

效果

成功解决中文乱码问题

image-20250106103356468

参考

如何在 Matlab 中启用 UTF-8 编码_matlab编码设置utf8-CSDN博客

Matlab: 修改编码方式, 如GBK->UTF-8_matlab编码设置utf8-CSDN博客

matlab中文显示乱码:控制台上的,编辑器的,图片中的 - leoking01 - 博客园

How can I change matlab terminal Encoding from 'GBK'to 'utf8'? - MATLAB Answers - MATLAB Central

修改windows终端cmd控制台默认编码为utf-8 - luckyangg - 博客园

MATLAB遇到问题:绘图窗口显示中文乱码方框的解决方法_matlab新罗马中文是方块-CSDN博客

适合matlab的编程字体“YAHEI CONSOLAS HYBRID”-下载+安装-CSDN博客

startup