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