背景
之前项目跑在公司的电脑上,Win7 ,JDK8 没有出现乱码问题
最近一次在自己电脑上跑的时候,Win10 ,JDK8 出现了乱码问题
尝试
开始以为是文件编码问题
设置了IDEA的 编码,全部都是UTF-8 结果还是乱码
之后观察到只有MenuBar 上的中文会乱码,我是用了XML 定义的Menu项,以为在解析xml上除了差错。但之前环境上没问题
检查了menubar.xml的文件编码和文本编码,都是TUTF-8
System.out.println("Default Charset=" + Charset.defaultCharset());
System.out.println("file.encoding=" + System.getProperty("file.encoding"));
System.out.println("Default Charset=" + Charset.defaultCharset());
System.out.println("Default Charset in Use=" + getDefaultCharSet());
输出
Default Charset=UTF-8
file.encoding=UTF-8
Default Charset=UTF-8
Default Charset in Use=UTF8
断点调试了一下,读取到的也确实是没有乱码的,那怎么就到javafx这里乱了呢。
真是 百思不得骑姐
真相了
label.setStyle("-fx-font-family: \"微软雅黑\"; -fx-font-size: 10pt;");
我项目里有很多类似这种的代码,虽然不是我写的(这里不是甩锅),硬编码上去确实不好,建议写在css中。
就是这里的 微软雅黑
导致的。 我当时猜测是不是需要字体的英文名 ?试着改成 Microsoft YaHei
,重启程序,好了。
撒花,搞定了。
网友评论