MATLAB乱码问题解决
1 问题描述
MATLAB R2019a 打开他人 .m 文件在MATLAB编辑器中文全为乱码,在安装目录 bin 文件夹下更改 lccdata.xml 后无乱码,但是输出绘图和命令行仍是乱码。
2 解决方案
2.1 针对在 MATLAB 编辑器打开出现乱码分析
推测为编码方式出现问题,实际上也是编码方式的问题
1、查看现在编码方式
在命令行输入:
1 | feature('locale') |
查看输出为:
或者输入:
1 | slCharacterEncoding() |
输出为:
可以看到编码方式为 GBK
2、第三方编辑器打开
而在第三方编辑器中打开.m文件不会出现乱码且编码方式为 ‘UTF-8'
3、(无效)尝试修改编码方式从 'GBK' 到 'UTF-8',在命令行输入
1 | slCharacterEncoding('UTF-8') |
输入:
1 | slCharacterEncoding() |
输出为:
但是乱码未解决
4、(无效)重启MALAB后仍然乱码
且输入 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 | <encoding name="GBK"> |
(2)'UTF-8' 对应字段修改
定位到 'UTF-8' 对应字段
1 | <encoding name="UTF-8"> |
修改为:
1 | <encoding name="UTF-8"> |
通过这样的修改,可以使 MATLAB 编辑器将 'GBK' 重定向为 'UTF-8'
3、重新打开 MATLAB 编辑器验证
观察到中文显示正常
2.3 针对命令行输出和绘图乱码问题分析
编辑器解决乱码后命令行输出和绘图界面仍然乱码,修改字体也无效后,通过添加启动脚本设置编码方式解决
观察到 feature('locale') 的输出为:
可以看到终端仍为 'GBK' 编码,尝试修改系统终端默认编码
2、(无效)修改系统终端编码
(1)cmd 打开终端,未修改前为 'GBK',现在通过重设时区的方式修改为 'UTF-8'
(2)打开‘控制面板’->‘区域’
(3)打开‘管理’->‘更改系统区域设置’
勾选 'Beta 版:使用Unicode UTF-8',重启
(4)打开 MATLAB 仍然乱码
3、(无效)MATLAB更改支持中文的字体
(1)打开 '主页'->‘预设’
(2)找到 '字体' -> ‘自定义’ ->‘命令行窗口’->‘自定义’
修改字体为支持中文的字体,如'宋体'
(3)仍然无法解决乱码
2.4 针对命令行输出和绘图乱码问题解决
通过启动时运行脚本 'startup.m' 解决
1、在MATLAB安装目录之外新建文件夹,如下:
D:
2、新建启动脚本'startup.m'
启动脚本'startup.m'名字不要更改
官网描述如下:
startup 在启动 MATLAB® 时执行用户指定的命令。MATLAB
执行搜索路径中名为 startup
且具有可执行文件扩展名的任何文件。可执行文件扩展名的示例有
.m、.mlx 和 .mlapp。
在 userpath
文件夹中创建一个 startup.m 文件,该文件夹位于 MATLAB
搜索路径上。添加希望在启动时执行的命令。例如,您的代码可以包含物理常量、图形属性的默认值、工程换算因子或者您想要在工作区中预定义的任何其他内容
3、在启动脚本中编写
1 | feature('DefaultCharacterSet','UTF-8'); |
不知什么原因feature('DefaultCharacterSet','UTF-8');输入了两次才有效果
4、在 MATLAB中 添加启动脚本路径
'主页' -> '设置路径'
‘添加文件夹’ ->D:(脚本路径)
效果
成功解决中文乱码问题
参考
如何在 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博客
