加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2011-04-14 13:36:29)
标签:

杂谈

分类: —MATLAB

Matlab 6.5版本对中文支持较好,直接打开.mdl文件没有问题。变量名及模块名均可使用中文(汉字)
在单位用上Matlab 2008b后发现直接打开6.5下编写的.mdl文件,出现编码错误,提示如下:
http://www.caoxbo.com/wp-content/uploads/2009/12/ChError.jpg2008b 及以上版本Simulink 无法直接打开或无法保存含中文字符MDL文件的错误" TITLE="彻底解决Matlab 2008b 及以上版本Simulink 无法直接打开或无法保存含中文字符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
http://www.caoxbo.com/wp-content/uploads/2009/12/setting.jpg2008b 及以上版本Simulink 无法直接打开或无法保存含中文字符MDL文件的错误" TITLE="彻底解决Matlab 2008b 及以上版本Simulink 无法直接打开或无法保存含中文字符MDL文件的错误" />
单击“确定”保存退出即可。
好啦,这个问题得到解决啦,你可以直接双击一个.mdl文件,打开试试,相信应该不会出现先前的编码问题了。
^o^Bertrand祝您使用愉快!

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有