MATLAB源文件中的Unicode字符

时间:2011-02-13 13:59:38

标签: matlab unicode encoding

我想在Unicode源文件的评论中使用MATLAB个字符。当我写文字时,这似乎有效;但是,如果我关闭文件并重新加载它,“异常”字符就会变成问号。我猜MATLAB将文件保存为ASCII。

有没有办法告诉MATLAB改为使用UTF-8

5 个答案:

答案 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,选择显示包内容截图(此处为德语)

Package Contents

例如,对于德语默认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字符,帮助浏览器无法识别它们,以及控制台窗口输出。