Utf 8 Modelica编码问题

Utf 8 Modelica编码问题,utf-8,character-encoding,modelica,dymola,openmodelica,Utf 8,Character Encoding,Modelica,Dymola,Openmodelica,自Modelica 3.2()以来,允许在注释、描述字符串和/或注释中使用任意Unicode字符。 但由于某些原因,我在使用以下代码时遇到了问题: within ; model ENCO_testing "code for investigating Dymola encoding problems" Real TempC "Temperature in °C"; parameter Real someNumber "description string german üöäß";

自Modelica 3.2()以来,允许在注释、描述字符串和/或注释中使用任意Unicode字符。
但由于某些原因,我在使用以下代码时遇到了问题:

within ;
model ENCO_testing "code for investigating Dymola encoding problems"
  Real TempC "Temperature in °C";
  parameter Real someNumber "description string german üöäß";
  Integer greekInt=4 "description string greek αβδεηζμθ";
  // a comment with math symbols: °²³~µ

equation 
  TempC = if greekInt > 3 then someNumber*5 else someNumber/3;
end ENCO_testing;
要重现我的问题,请尝试以下UTF-8往返:

  • 将上述文本复制并粘贴到您喜爱的文本编辑器中
  • 使用UTF-8(带或不带BOM,或任何其他编码)保存文件并关闭
  • 在收藏夹编辑器中再次打开,然后在OpenModelica和Dymola中打开(按此顺序)
  • 如果情况仍然良好,点击Dymola中的保存按钮(可能删除一个字符并重新键入)
  • 在收藏夹编辑器OpenModelica和Dymola中再次打开
  • 至少有些符号在某些地方看起来会有所不同

有人能告诉我如何保存该文件,使其在任何地方看起来都很好吗?还是我期望太高了?在最新的Dymola(Linux)中测试UTF-8时,似乎Dymola不再将编码更改为ISO-8859-1(在我的记忆中,它用来更改此编码)。但是,它看起来并不好,因为它显示为UTF-8文本是ISO

要让它在任何地方都看起来正常,最简单的方法是使用HTML实体。这似乎在OMEdit的“模拟结果”浏览器中没有正确显示,但在Dymola中显示:

Real TempC "<html>Temperature in &deg;C<html>";
Real TempC“以摄氏度为单位的温度”;

是的,这肯定是Dymola缺乏UTF8支持的问题(即使是2016年)。那怎么办呢?对于描述字符串,您可以简单地使用html实体来解决Dymola缺乏UTF8支持的问题

e、 g

Real TempC "<html>Temperature in &deg;C</html>";
parameter Real someNumber 
  "<html>description string german &uuml;&ouml;&auml;&szlig;</html>";
Real TempC“以摄氏度为单位的温度”;
参数实数
“描述字符串德语ü;ö;ä;ß;”;
不太好,但很管用;-)

PS:Ah并向DS投诉这项早就过期的功能。

在Dymola 2016 FD01(字面意思是刚刚发布)中,您可以设置
高级。PreferWritingLatin1=false以避免写入iso-latin-1文件


如需支持,请使用和/或联系经销商;地址是迪莫拉。support@3ds.com已经退休。

实际上,我只对度符号感兴趣。这里有一个违规代码的副本:看起来@sjoelund.se比我强。Dymola 2018似乎完全支持UTF-8,至少上面的示例可以正常工作。Dymola似乎默认使用带BOM的UTF-8,但也接受不带BOM的UTF-8。感谢您对电子邮件地址的澄清。安装最新的Dymola版本将是我明天要做的第一件事。这似乎是可行的,谢谢,但标志必须手动设置:如果不手动设置,Dymola仍然会搞乱上面的示例,因为与发行说明相反,检测非iso-latin-1字符不起作用(或者不够可靠,试试这个例子)。现在,我将只在其中一个启动脚本中添加这个标志。Dymola 2017添加了一个新的标志
Advanced。AlwaysWriteUTF8
。Dymola 2018包括一些与UTF-8相关的改进。上面的示例现在可以正常工作了。