新浪博客

彻底解决Matlab 2008b 及以上版本Simulink 无法直接打开或无法保存含中文字符MDL文件的错误

2011-04-14 13:36阅读:13
Matlab 6.5版本对中文支持较好,直接打开.mdl文件没有问题。变量名及模块名均可使用中文(汉字)
在单位用上Matlab 2008b后发现直接打开6.5下编写的.mdl文件,出现编码错误,提示如下:
彻底解决Matlab <wbr>2008b <wbr>及以上版本Simulink <wbr>无法直接打开或无法保存含中文字符MDL文件的错误

由此知道,Matlab2008默认编码为GBK,而经查看后发现,6.5下的编码格式非GBK,两者不一,导致冲突。
其中注意到1)提示,可以使用”bdclose
all;set_param(0,’CharacterEncoding’,Enc)
“命令进行更改,百度网友
的相关解答,得到证实。
在MATLAB HELP中更可以查询到slCharacterEncoding命令,用法比set_param更显简单。
完整用法如下:
启动Matlab后,提示符下输入:>>bdclose all;
slCharacterEncoding(’ISO-8859-1′);

即可。
欢迎转载:请保留出处!
http://www.caoxbo.com/20091221-303.html

有人会问:为什么选择’ISO-8859-1′?一方面可以自行查看Matlab帮助,
另一方是由于这是本人测试出来的。^o^ Bertrand。经过以上操作后,就可以正常打开.mdl文件了。
但是上面的方法,笔者用了近一个月,每天都要反复打开Matlab几次,每次都用重复此命令,实在不和谐
所以决定找出不但治标而且治本的方法,将自己解放。今日在办公室睡足觉后,捣腾出来了。现记录如下:
第一步:
经观察,slCharacterEncoding命令实质仍是调用set_param内部命令,实现功能。故修改slCharacterEncoding
命令m文件
如下:
>>edit slCharacterEncoding

if ~isempty(newEncoding)
set_param(0, ‘CharacterEncoding’, newEncoding);
end
修改为:
if ~isempty(newEncoding)
if newEncoding == 4
if
~strcmp(prevEncoding,’ISO-8859-1′)

set_param(0,
‘CharacterEncoding’, ‘ISO-8859-1′);

end
else
set_param(0, ‘CharacterEncoding’, newEncoding);
end
end
第二步:(关键一步)
打开“我的电脑”选择“工具“菜单下的”文件夹选项“,点击”文件类型“页,找到.mdl文件类型,
选择”高级“,在弹出的对话框中设置如下:
open操作:
1)应用程序选择”…\bin\win32\matlab.exe”
2)勾选“启动DDE”
3)设置“DDE消息”为:slCharacterEncoding(4);uiopen(’%1′,1)
4)“应用程序”为:ShellVerbs.MATLAB
5)“未运行的DDE应用程序”留空
6)“主题”为:system
彻底解决Matlab <wbr>2008b <wbr>及以上版本Simulink <wbr>无法直接打开或无法保存含中文字符MDL文件的错误
单击“确定”保存退出即可。
好啦,这个问题得到解决啦,你可以直接双击一个.mdl文件,打开试试,相信应该不会出现先前的编码问题了。
^o^Bertrand祝您使用愉快!

留言板

下载客户端体验更佳,还能发布图片和表情~

亿万博主正在被热评!
999+

给此博文留言吧! 有机会上热评榜! 攒金币兑换礼品!

好的评论会让人崇拜发布评论

我的更多文章

下载客户端阅读体验更佳

APP专享