【MATLAB】字体美化和乱码

文章目录

  • 前言
  • 首先说说说字体美化
  • 乱码到底是怎么导致的?
  • 1 字体导致的乱码
  • 2 编码导致的乱码
  • 总结

前言

  最近打开MATLAB,又发现了一个问题:编辑器中的中文输入在命令行或者说终端输出竟然是乱码,然后赶紧翻阅了一下此前的博客以及未发出的草稿,虽然依稀记得好像遇到过,但仍然没有找到一个完整的总结。于是就有了这篇博客。

声明:以下内容均基于MATLAB 2019b这个版本

首先说说说字体美化

  这是一切的源头,依稀记得最早就是因为看不惯MATLAB丑陋的字体,于是想要美化一下,但无奈遇到了乱码的问题,这也是本文标题的由来。

乱码到底是怎么导致的?

  主要是两种原因:编码和字体。所谓编码,就是说软件以不符合原文本或文本文件的编码方式进行解析文字,从而导致乱码,一般是中文乱码;而所谓字体,即所使用的字体中不包含中文字体,从而导致中文乱码,因为有很多字体是只包含一种语言的。

1 字体导致的乱码

  对代码来说,个人更推荐的是Fira Code这个编程专用的字体,但是如果直接在MATLAB中将字体替换为Fira Code,那么原来包含中文的脚本文件将产生乱码,如下图所示。
在这里插入图片描述
这就是因为Fira Code这个字体中不包含中文的字体,所以无法显示中文字体。
  所以这里要使用的是混合字体,即将包含中文的字体和编程字体进行合并,这样当显示英文时,会优先使用编程字体;而显示中文时,则会使用能够显示中文的字体。
  常用的混合字体如下所示:

  • YaHei-Consolas-Hybrid
  • Yahei-Fira-Icon-Hybrid-Font

需要注意的是,如果安装好字体之后,在MATLAB设置中仍然找不到,可以尝试将字体的ttf文件放到MATLAB安装目录下,参考这个路径:

C:\Program Files (x86)\MATLAB_R2019b\sys\java\jre\win64\jre\lib\fonts${Install_Dir_of_MATLAB}\sys\java\....

  如果想自己制作混合字体也有办法:一般是使用WFM,或者Font Creator这两个工具,也各自附上教程链接:

  • WFM
  • Font Creator

2 编码导致的乱码

  需要知道的是,截至R2019b这个版本,MATLAB文本文件采用的编码方式仍然是GBK,而不是使用最为广泛的UTF-8,即在MATLAB中新建一个文本文件,其编码方式就是GBK,且终端也是以GBK编码方式进行解析显示。
  这个问题其实如果一直使用的是MATLAB编辑器那其实没啥,但是之前尝试使用VS Code编辑器来码代码时还是发现了GBK的不便之处,所以建议还是将编码方式改成UTF-8。
  经过查找资料,发现网上目前关于MATLAB修改编码方式的方法主要是两种,其中一种是修改根目录下的一个配置文件,以强行修改编码方式别名的方式来“欺骗”MATLAB,从而实现编码方式的修改;另一种则是创建一个修改编码方式的函数文件,然后在软件中添加该文件,使得每次打开之前都会执行该文件,从而实现编码方式的修改。

  • 方式一:修改根目录bin文件夹下的lcdata.xml文件
    一般来说,如果根目录下没有同名文件,应该会有类似名称的文件,比如带个example, src等后缀,可以直接把改文件复制并改名为lcdata.xml,然后把文件中关于编码方式的部分给取消注释,并做一定修改:
    在这里插入图片描述
    在这里插入图片描述
  • 方式二:新建一个startup.m文件并在软件中添加路径
      需要注意的是这个文件夹可以不在软件根目录下,但要求名字必须为startup.m,理论上来说这个代码可以加入任意代码,比如如果是为了修改编码方式,可以加入以下代码:
    function startup
    feature('DefaultCharacterSet','UTF-8');
    set(0,'DefaultTextFontname','宋体')
    set(0,'DefaultAxesFontname','宋体')
    end
    
    然后在MATLAB中包含这个文件夹:
    在这里插入图片描述
    这样下一次启动MATLAB则会自动修改编码方式为UTF-8.

方式二其实涉及到一个函数:查看编码方式:feature('locale'),具体用法建议查看帮助文档,此外还有一个查看当前的编码方式,但执行速度较慢:slCharacterEncoding()

总结

  本文总结了在MATLAB中设置字体以及相应的可能需要修改编码方式的教程。个人认为对于字体有强迫症要求的用户来说还是很有帮助的。虽然不是很难,但还是有必要记录一下,防止之后自己忘记。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/92396.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用VBA实现快速模糊查询数据

实例需求:基础数据保存在Database工作表中,如下图所示。 基础数据有37个字段,上图仅展示部分字段内容,下图中黄色字段为需要提取的数据字段。 在Search工作表B1单元格输入查询关键字Title和Genre字段中搜索关键字,包…

【数据结构--八大排序】之归并排序

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

Armv9 Cortex-A720的L2 memory system 和 L2 Cache

9 L2 memory system Cortex-A720核心的L2内存系统通过CPU bridge连接core与DynamIQ Shared Unit-120,其中包括私有的L2缓存。 L2缓存是统一的,每个Cortex-A720核心在一个集群中都有私有的L2缓存。 L2内存系统包括使用虚拟地址(VA)和程序计数器(PC)的数据预取引擎。不同…

【2023研电赛】华东赛区一等奖:电动叉车永磁同步电机MTPA及弱磁控制研究

本文为2023年第十八届中国研究生电子设计华东赛区一等奖竞赛作品分享,参加极术社区的【有奖活动】分享2023研电赛作品扩大影响力,更有丰富电子礼品等你来领!,分享2023研电赛作品扩大影响力,更有丰富电子礼品等你来领&a…

Kakfa高效读写数据

1.概述 无论 kafka 作为 MQ 也好,作为存储层也罢,无非就是两个功能:一是 Producer 生产的数据存到 broker,二是 Consumer 从 broker 读取数据。那 Kafka 的快也就体现在读写两个方面了,本文也是从这两个方面去剖析Kafk…

nodejs+vue健身服务应用elementui

第三章 系统分析 10 3.1需求分析 10 3.2可行性分析 10 3.2.1技术可行性:技术背景 10 3.2.2经济可行性 11 3.2.3操作可行性: 11 3.3性能分析 11 3.4系统操作流程 12 3.4.1管理员登录流程 12 3.4.2信息添加流程 12 3.4.3信息删除流程 13 第四章 系统设计与…

数据结构与算法-(7)---栈的应用-(3)表达式转换

🌈write in front🌈 🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由Aileen_0v0🧸 原创 CSDN首发🐒 如…

华为云云耀云服务器 L 实例评测:快速建站的新选择,初创企业和开发者的理想之选

华为云云耀云服务器 L 实例评测:快速建站的新选择,初创企业和开发者的理想之选 文章目录 华为云云耀云服务器 L 实例评测:快速建站的新选择,初创企业和开发者的理想之选导语:摘要: 正文产品概述部署简易性步…

在Windows11家庭中文版中启用Copilot(预览版)

1、下载ViveTool-vx.x.x.zip 2、解压下载的压缩包ViveTool-vx.x.x.zip 3、复制ViveTool文件夹的路径 4、按下wins,打开搜索 5、输入cmd,并选择“以管理员身份运行” 6、在cmd中输入以下命令,进入ViveTool文件夹: cd ViveTool…

BI神器Power Query(26)-- 使用PQ实现表格多列转换(2/3)

实例需求:原始表格包含多列属性数据,现在需要将不同属性分列展示在不同的行中,att1、att3、att5为一组,att2、att3、att6为另一组,数据如下所示。 更新表格数据 原始数据表: Col1Col2Att1Att2Att3Att4Att5Att6AAADD…

接雨水问题

接雨水问题 问题背景 LeetCode 42. 接雨水 接雨水问题是一个经典的计算雨水滞留量的问题,通常使用柱状图来表示不同高度的柱子。在下雨的情况下,柱子之间的凹陷部分能够存储雨水,问题的目标是计算这些柱子所能接收的雨水总量。 相关知识 …

windows系统利用powershell查看系统支持那些Windows功能选项

在PowerShell中,我们可以使用Get-WindowsOptionalFeature cmdlet命令来查看Windows功能选项。 打开PowerShell 输入以下命令:将结果输出到1.log Get-WindowsOptionalFeature -Online >1.log 可以看到在指定路径下看到生成了文件 打开查看内容&…

BI神器Power Query(27)-- 使用PQ实现表格多列转换(3/3)

实例需求:原始表格包含多列属性数据,现在需要将不同属性分列展示在不同的行中,att1、att3、att5为一组,att2、att3、att6为另一组,数据如下所示。 更新表格数据 原始数据表: Col1Col2Att1Att2Att3Att4Att5Att6AAADD…

Halcon中灰度直方图的使用与学习

目录 第一步:当前打开窗口的显示灰度图或者mono图片第二步:激活后,我们可以去调整调整右边直方图灰阶值的中蓝色和红色竖线,获取左边图上的灰阶值的范围内的特征显示。第三步:插入代码:总结:它的直观目的,就是查看灰度的分布情况!灰度直方图,是我们经常使用,抓取不同…

算法的时间复杂度分析习题专题

之前写了一篇重点是讲理论,今天重点在于对于题目的分析 题目难度不分先后,有题目来源会直接给出链接或者位置 第一题:消失的数字 题目来源:LeetCode消失的数字 分析 第一种思路分析: 参考代码: #include …

Git与Repo:开源开发的得力工具组合

Git与Repo:开源开发的得力工具组合 1. 引言 开源开发在当今的软件行业中扮演着至关重要的角色。它不仅推动了技术的创新和进步,也促进了开发者之间的合作与共享。随着越来越多的开源项目的涌现,有效的代码管理和版本控制成为了必不可少的工…

Elasticsearch基础篇(三):Elasticsearch7.x的集群部署

Elasticsearch的集群部署 1. Elasticsearch集群架构主节点数据节点客户端节点分片节点间通信集群状态 2. Elasticsearch集群部署2.1 系统配置修改2.1.1 修改文件句柄数和线程数2.1.2 修改虚拟内存2.1.3 关闭交换空间(Swap) 2.2 下载es数据库并上传到服务…

STM32 定时器介绍--通用、高级定时器

目录 高级定时器 1.功能框图 1-时钟源 2-时基单元 3-输入捕获 4-输出比较 2.输入捕获的应用 3.输出比较的应用 4.初始化结构体 1-时基初始化结构体 2-输出比较结构体 3-PWM信号 周期和占空比的计算--以通用定时器为例 4-输入捕获结构体 5-断路和死区初始化结构体…

Linux 处理文件( touch 命令、cp 命令、mv 命令、rm 命令)

Linux 处理文件 创建文件( touch 命令),复制文件( cp 命令),重命名文件( mv 命令),删除文件(rm 命令) 文章目录 Linux 处理文件一、创建文件&…

Xcode 超简单实用小秘技让撸码进入新境界

概览 Xcode 是开发  应用不可或缺的王牌主力军,虽然 Xcode 中一些常用使用姿势想必大家都已驾轻就熟,但其中仍有一些隐藏宝藏小技巧不为人知。 充分挖掘它们可以极大加速和方便秃头码农们日常的撸码行为。 一般的,它们分为两类&#xff…