我想在Unicode源文件的评论中使用MATLAB个字符。当我写文字时,这似乎有效;但是,如果我关闭文件并重新加载它,“异常”字符就会变成问号。我猜MATLAB将文件保存为ASCII。
有没有办法告诉MATLAB改为使用UTF-8?
答案 0 :(得分:19)
根据http://www.mathworks.de/matlabcentral/newsreader/view_thread/238995
feature('DefaultCharacterSet', 'UTF8')
会将编码更改为UTF-8。您可以将上面的行放在startup.m文件中。
答案 1 :(得分:7)
How the MATLAB Process Uses Locale Settings显示了如何为不同平台设置编码。使用
feature('DefaultCharacterSet')
您可以阅读有关此未记录的函数here的更多信息。有关其他选项,另请参阅此Matlab Central thread。
答案 2 :(得分:2)
仅限Mac OSX!
当我找到适用于我的情况的解决方案时,我想分享它。
Mathworks建议here使用slCharacterEncoding(encoding)
以根据需要更改编码,但对于OSX,这并不能完全解决问题,因为接受的答案中的feature('DefaultCharacterSet')
不会它。什么帮助我获得用于打开和保存.m文件的UTF-8编码集是MATLAB答案的以下链接:
https://www.mathworks.com/matlabcentral/answers/12422-macosx-encoding-problem
Matlab似乎忽略了slCharacterEncoding(encoding)
或feature('DefaultCharacterSet')
中设置的任何值,但使用了系统偏好设置中设置的区域 - >语言与区域。在我们的案例中检查选择了哪个区域之后,可以在
$matlabroot/bin/lcdata.xml
可以通过访问应用程序打开此目录,然后右键单击Matlab,选择显示包内容截图(此处为德语)
例如,对于德语默认ISO-8859-1,可以通过更改文件lcdata.xml中的相应行来调整它:
<locale name="de_DE" encoding="ISO-8859-1" xpg_name="de_DE.ISO8859-1">
为:
<locale name="de_DE" encoding="UTF-8" xpg_name="de_DE.UTF-8">
如果lcdata.xml文件中不存在所选的区域,则无效。
希望这有帮助!
答案 3 :(得分:0)
对于Mac用户,Jendker的解决方案确实有帮助!先谢谢了。
请务必通过
检查Matlab中的默认语言getenv('LANG')
然后转到lcdata.xml
,找到相应的xpg_name
,然后将encoding
更改为UTF-8
。
现在重启Matlab,一切都完成了!喝彩!
答案 4 :(得分:0)
提供的解决方案here在Windows上使用R2018a。
如果链接不起作用:我们的想法是使用文件matlabroot/bin/lcdata.xml
来配置编码名称的别名(可以在评论中的这个文件中找到一些解释):
<codeset>
<encoding name="UTF-8">
<encoding_alias name="windows-1252" />
</encoding>
</codeset>
您可以使用自己的值代替windows-1252
,可以通过运行feature('locale')
来获取当前使用的编码。
虽然,如果您在帮助评论中使用Unicode字符,帮助浏览器无法识别它们,以及控制台窗口输出。