英文操作环境下MATLAB编辑器里的中文乱码,应该是有两种情况
1、编辑器输入中文显示乱码(一般是框框等等)
2、编辑器能输入中文正常显示,保存重新打开后变成乱码(一般是??)
统一的解决方法是
①Control Panel,Region,Administrative,Language for non-Unicode Option Set as Chinese(Simplified,China)
②Control Panel,Region,Formats,Format Option Set as Chinese(Simplified,China).
注意,光设置Language for non-Unicode Option是没用的,Format也要一起设。
但是这样有个什么问题呢?系统格式变成中文了,matlab显示语言也变成中文了,如果实验室有其他人和你一起共用会很不好。
精准一些的解决方法是
1、编辑器不能显示中文一般是字体的问题,改字体,有很多教程了,MATLAB,Preferences,Fonts。
2、编辑器能显示中文就不是字体的原因了,保存变乱码考虑是字符集的问题。来看一下
>> feature('locale')
ans =
struct with fields:
ctype: 'en_US.windows-1252'
collate: 'en_US.windows-1252'
time: 'en_US.windows-1252'
numeric: 'en_US_POSIX.windows-1252'
monetary: 'en_US.windows-1252'
messages: 'en_US.windows-1252'
encoding: 'windows-1252'
terminalEncoding: 'GBK'
jvmEncoding: 'Cp1252'
status: 'MathWorks locale management system initialized.'
warning: ''
这里的en_US.windows-1252是指向Cp1252的一个Name,Cp1252这个小字符集才是关键,其他都不用看了,只要考虑把jvmEncoding: 'Cp1252'这个改掉就行。
找MATLAB目录下的lcdata.xml文件,里面是空的,MATLAB如果读lcdata.xml为空,会使用系统默认的字符集,但是并不代表lcdata.xml文件是没用的,我用的是MATLAB2017,同一个目录下还有一个lcdata_utf8.xml,直接更名成lcdata.xml,搜索windows-1252或者是cp1252,找到节点
<encoding name="windows-1252" jvm_encoding="Cp1252">
<encoding_alias name="1252"/>
</encoding>
改成
<encoding name="windows-1252" jvm_encoding="UTF-8">
<encoding_alias name="1252"/>
</encoding>
保存
重启MATLAB,feature('locale')
中文显示也正常了。
如果没有lcdata_utf8.xml怎么办?确定ctype与jvmEncoding的关联,自己编辑lcdata.xml就行了
按照它的格式
<!-- <codeset> -->
<!-- <encoding name="StandardEncodingName" jvm_encoding="JavaEncodingName"> -->
<!-- <encoding_alias name="AliasName"/> -->
<!-- </encoding> -->
<!-- </codeset> -->
<codeset> <encoding name="windows-1252" jvm_encoding="UTF-8">
<encoding_alias name="1252"/>
</encoding></codeset>
//====================================xisat=================
困扰我几天了,今天下决心来弄好,希望能帮到大家。