Modelica编码问题
Modelica encoding problems
自 Modelica 3.2 (released March 2010) 起,允许在注释、描述字符串 and/or 注释中使用任意 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 °C<html>";
是的,这绝对是 Dymola(甚至 2016 年)缺乏 UTF8 支持的问题。那么该怎么办?对于描述字符串,您可以简单地使用 html 实体来解决 Dymola 缺乏 UTF8 支持的问题。
例如,
Real TempC "<html>Temperature in °C</html>";
parameter Real someNumber
"<html>description string german üöäß</html>";
不太好,但可以用 ;-)
PS:啊,向 DS 抱怨这个迟来的功能。
在 Dymola 2016 FD01(实际上刚刚发布)中,您可以设置 Advanced.PreferWritingLatin1=false;
以避免写入 iso-latin-1 文件。
如需支持,您应该使用 http://www.3ds.com/support and/or 联系您的经销商;地址 Dymola.support@3ds.com 已停用。
自 Modelica 3.2 (released March 2010) 起,允许在注释、描述字符串 and/or 注释中使用任意 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 °C<html>";
是的,这绝对是 Dymola(甚至 2016 年)缺乏 UTF8 支持的问题。那么该怎么办?对于描述字符串,您可以简单地使用 html 实体来解决 Dymola 缺乏 UTF8 支持的问题。
例如,
Real TempC "<html>Temperature in °C</html>";
parameter Real someNumber
"<html>description string german üöäß</html>";
不太好,但可以用 ;-)
PS:啊,向 DS 抱怨这个迟来的功能。
在 Dymola 2016 FD01(实际上刚刚发布)中,您可以设置 Advanced.PreferWritingLatin1=false;
以避免写入 iso-latin-1 文件。
如需支持,您应该使用 http://www.3ds.com/support and/or 联系您的经销商;地址 Dymola.support@3ds.com 已停用。