我尝试在 java 中打开一个 webview 并显示 spotify 登录页面。 ( https://accounts.spotify.com/en/login ):
JFrame f = new JFrame();
f.setTitle("Spotify");
f.setSize(500,500);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JFXPanel jfxPanel = new JFXPanel();
f.add(jfxPanel);
Platform.runLater(() -> {
WebView webView = new WebView();
jfxPanel.setScene(new Scene(webView));
WebEngine webEngine = webView.getEngine();
webEngine.load("https://accounts.spotify.com/en/login");
});
结果就是下面的窗口。 (当我复制神秘文本并将其粘贴到另一个应用程序中时,它会向我显示具有正确编码的文本。
如何使用正确的编码显示 spotify 登录页面?
最佳答案
我看到了this在我的 WebView 中的 Dropbox 登录页面也是如此。
您遇到的问题与编码无关。 JavaFx WebView 在加载本地字体时存在一些问题。 如果您加载一个网站,该网站想要加载您计算机上安装的本地字体,您将看到这些神秘字母。 如果删除字体,您将照常看到文本。
所以你的问题不是网站的编码,而是 spotify 想要加载的字体,而且你的电脑上有本地字体。
您必须找到一种方法来阻止 WebView 加载本地字体。 也许通过注入(inject)一些代码。
关于JavaFX Webview 编码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32484117/