JavaFx 中文乱码问题解决

接用户报告使用 PeerBanHelper 时,使用 JavaFx 的 GUI 界面出现中文乱码,但 Swing 的 GUI 界面则没问题。

用户自行报告安装了多个字体整合包,并且同样使用 JavaFx 的 HMCL 启动器也出现乱码。由于其它也使用 JavaFx GUI 的用户没有出现这个问题,且我也无法在本地复现,排除 PBH 自己的问题,多半这个锅得甩给字体整合包。

PeerBanHelper 并没有单独配置字体,因此 JavaFx 根据系统默认使用了默认中文字体微软雅黑。那么现在需要确定是不是微软雅黑的锅。现在指定 ListView 的字体为 Consolas, Monospace,可以看到单独指定了字体的 ListView 没有此字体问题。

让用户(左图)看了一眼微软雅黑的字体文件属性:

可以看到版本号、版权信息都不同。

从正常的同版本 Windows 系统上复制一份 C:\Windows\Fonts 文件夹到问题设备上,然后全选右键,安装(for all users),为所有用户安装(不要选为当前用户安装,用带 UAC(小盾牌)标志的选项)。如果此时整个系统界面都已经乱码,使用开始菜单盲打 “语言”,快速进入语言菜单,先将系统切换到英语语言再操作。安装后注销重新登录即可解决问题。

如果用户无法执行这些操作,可以通过 CSS 手动设置 JavaFx 到其它字体,例如等线或者SimSun-ExtB(宋体),虽然那叫一个丑,但是最起码绕过了乱码问题。

* {
    -fx-font-family: "SimSun-ExtB"
}
Stage st = MainJavaFx.getStage();
st.getScene().getRoot().getStylesheets().add(Main.class.getResource("/javafx/css/root.css").toExternalForm());
除特殊说明以外,本站原创内容采用 知识共享 署名-非商业性使用 4.0 许可。转载时请注明来源,以及原文链接
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇