UPDATE 6月20日奇怪的統一行爲
摘要:
考慮以下幾點:
String problemString = "é";
JavaFX8的TextField有,如果它被設置爲顯示problemString的內容煩惱如下:
aTextField.setText(problemString);
在Windows 10上,產生「МЃ」而不是「é」,而在macOS 10.12上,TextField將顯示「é」,但會非常麻煩並且毫無用處。
另外值得注意的是,TextField在使用setText()方法時,在任何操作系統上覆制和粘貼problemString的內容都沒有問題。
UPDATE 6月12日
我已經進一步縮小的問題。 é我有問題不是預先組合的字符(U + 00E9),而是由e + composed組成。
Java將在macOS 上正確顯示這些字符,但 TextField非常糟糕,並且不允許編輯文本。
ORIGINAL
我有一個程序,讀取文本,以Unicode UTF-8格式,從一個文件,並存儲在字符串的內容。在程序中的某個點,這些字符串的內容將被加載到TextField中,以便用戶進行編輯。我的問題是某些unicode字符顯示不正確。但是,如果文本保存迴文件,新文件或舊文件,內容將是正確的。另外要注意的是,這隻發生在Windows(10)上,在macOS(10.12)上不會發生此問題。任何想法是什麼造成這種情況,或如何解決它?
例如:
我從一個文本文件中的字符「e」讀,並將其存儲在一個字符串。在TextField中顯示它時,我會看到「МЃ」而不是「é」。但是,如果我繼續使用該程序並保存到文本文件中,該文件將包含一個「é」。
你應該嘗試改變字體。我是您使用的字體不支持特殊字符「é」 – Razib
這可能是使用字符編碼的問題。嘗試在讀取/寫入文件時指定正確的編碼。 – fabian
@Razib。也許。我會試試看,字體目前設置爲「系統」。看起來奇怪的是,它不支持「é」,而支持陌生人「МЃ」。 – user9985