2015-05-21 66 views
1

由於Modelica 3.2(released March 2010)允許在註釋,描述字符串和/或註釋中使用任意的Unicode字符。
但由於某種原因,我無法用如下代碼:Modelica編碼問題

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的
  • 至少一些符號看起來不同的地方

有人可以告訴我如何保存該文件,使其看起來很好嗎?還是我期待太多?什麼需要解決和在哪裏?

+0

在現實中,我只對°度符號感興趣。有問題的代碼的副本在這裏:https://gist.github.com/thorade/1aa56a886b003fc1e42c – matth

回答

1

在最新的Dymola(Linux)中測試UTF-8,看起來好像Dymola不再將編碼更改爲ISO-8859-1(用我的記憶來改變它)。但是,它看起來不太好,因爲它顯示爲UTF-8文本是ISO。

讓它看起來無處不在的最簡單方法是使用HTML實體。這似乎並不正確,在OMEdit仿真結果顯示在瀏覽器,但確實在Dymola的:

Real TempC "<html>Temperature in &deg;C<html>"; 
1

是這絕對是缺乏Dymola的(甚至2016)UTF8支持的問題。那麼該怎麼辦?對於描述字符串,您可以簡單地使用html實體來解決Dymola缺少UTF8支持的問題。

例如,

Real TempC "<html>Temperature in &deg;C</html>"; 
parameter Real someNumber 
    "<html>description string german &uuml;&ouml;&auml;&szlig;</html>"; 

不是很好,但工程;-)

PS:AH和抱怨DS這個期待已久的功能。

+0

看起來像@ sjoelund.se擊敗了我。 –

+0

Dymola 2018似乎完全支持UTF-8,至少上面的例子沒有問題。似乎Dymola默認使用帶有BOM的UTF-8,但也接受沒有BOM的UTF-8。 – matth

1

在Dymola 2016 FD01中(字面上剛剛發佈),您可以設置Advanced.PreferWritingLatin1=false;以避免編寫iso-latin-1文件。

支持您應該使用http://www.3ds.com/support和/或聯繫您的經銷商;地址[email protected]已經退休。

+0

感謝您對電子郵件地址的澄清。安裝最新的Dymola版本將是我明天要做的第一件事。 – matth

+0

這似乎是工作,謝謝,但國旗必須手動設置:如果沒有手動設置,Dymola仍然會搞砸上面的例子,因爲與發行說明相反,檢測非iso-latin-1字符會不工作(或不夠可靠,只是嘗試這個例子)。現在,我只需將該標誌添加到其中一個啓動腳本中即可。 – matth

+0

Dymola 2017添加了一個新的標誌'Advanced.AlwaysWriteUTF8'。 – matth