[英]IFileStore unable to read from path with accented characters Eclipse RCP
[英]Accented characters read from file has different value under Eclipse than console
我正在嘗試匹配一個下拉選項:
Cabina Económica
從屬性文件導入的字符串。
我在使用時遇到問題
"//a[text()='" + cabin + "']"
因此將其更改為:
final String translateFrom = "ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜÉÈÊÀÁÂÒÓÔÙÚÛÇÅÏÕÑŒäöüéèêàáâòóôùúûçåïõñœ";
final String translateTo = "abcdefghijklmnopqrstuvwxyzaoueeeaaaooouuucaionoaoueeeaaaooouuucaiono";
"//a[translate(text(),'"+translateFrom+"','"+translateTo+"')=translate('"+cabin+"', '"+translateFrom+"', '"+translateTo+"')]";
當我在Eclipse中測試它時,它可以完美地工作,但是在Windows 7控制台中運行它時,它會失敗:
main() Terminating due to error/exception: Unable to locate element: ....)=translate('Cabina Econ├│mica'....
如果我從頁面中打印出下拉選項,則在Windows控制台下顯示為:
Cabina Econ≤mica
≤似乎是ASCII F3,它與我在Eclipse下檢查(兩個)字符串時看到的內容匹配。
但是,從屬性文件中讀取的值│││,盡管在Eclipse下為F3,但在Windows控制台下似乎為C3B3。
F3是ó的Unicode值; C3B3是其UTF-8值。
為什么在Eclipse下通過Spring讀取屬性文件與在Windows控制台下讀取屬性文件會有不同的結果,我需要做些什么才能使它們相等?
我正在閱讀的網頁定義為
<meta ... charset=utf-8>
因此,我假設在看到某物(硒?)之前將其翻譯為utf-16或utf-32(其中ó= x'f3')。
而Spring的屬性文件似乎在控制台下讀為utf-8,而在Eclipse下讀為16/32。
進一步的研究表明,這可能與Spring的屬性文件加載有關。 我在以下位置提出了一個新問題:
並認為最好刪除此對象(除非有人反對?)
在eclipse的首選項中檢查控制台的編碼。 它可能與Windows控制台使用的編碼不同。
信息不確定但可能的答案:
實際上,高於7F的不是ASCII。 Windows控制台窗口(通常不正確地稱為“ DOS”提示或窗口)使用Windows“ OEM”(舊版)代碼頁,通常為437 ,其中F3是字符≤
。 而且,這兩個字符├│
是C3 B3你正確識別為UTF-8的Unicode F3 ó
。 它可以通過明確編碼,以修復Windows控制台顯示IBM437
,但你只需要在控制台顯示和不能做到這一點的其他地方,包括非Windows 文件 ,因為文件請使用所謂的“ANSI”(真CP1252)單字節代碼或幾種Unicode編碼中的一種(字節序為UTF-8或UTF-16)。
在Windows上,Java的I / O(特別是但不僅是文件)的默認編碼為CP1252,而在Unix上,它通常並非始終為UTF-8。 您的Eclipse在Unix上嗎? Windows上的Eclipse(Indigo)默認將CP1252用於純Java,但是我不知道Spring是否會做任何事情來覆蓋它。 如果它使用默認值讀取文件,則可以使用系統屬性file.encoding=utf-8
設置該默認值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.