我在Windows 7上使用JDK 1.8.0_201和Eclipse Oxygen(4.7.2)。我也安装了Microsoft Internet Explorer 11.0。我的java Swing应用程序嵌入了SWT Browser。我的java代码在“视觉顺序”中写入包含希伯来语文本的纯文本文件,并使用html扩展名保存它。然后我将Browser
的URL设置为指向我刚刚创建的HTML文件。当我运行应用程序时,Browser
以相反的顺序显示希伯来语。使用英语示例,而不是显示单词Hotel,它显示letoH。这是HTML ...
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO8859-8">
<style type="text/css">
body{font-family:"Miriam Fixed"; font-size:12px;}
</style>
</head>
<body>
<pre>
my Hebrew content
</pre>
</body>
</html>
这是编写文件的java代码
java.io.PrintWriter pw = new java.io.PrintWriter("filename.html", "windows-1255");
pw.println("<html>");
// remainder of "println()" calls to create content as shown above
pw.println("</html>");
pw.close();
最后,当我运行我的java应用程序时,我在java命令中显式设置了file.encoding属性,就像这样......
-Dfile.encoding=UTF-8
我猜它是我的电脑配置中的东西,但我不知道是什么,我希望有人可以指出我在哪里看。
问题的根源是,在<pre>
标签中,一切都是“视觉秩序”
通常,浏览器使用“逻辑顺序”呈现希伯来语。
我建议尝试以下方法:
<pre>
标签替换<div>
标签。dir="rtl"
attribute或<div>
玩<pre>
。我还没有进行详尽的测试,但是到目前为止,对HTML的以下更改已经解决了这个问题。我添加了标签bdo
作为pre
标签的子元素,即
<pre>
<bdo dir="ltr">
my Hebrew content
</bdo>
</pre>
请注意,这是唯一的变化。所有其他代码与我原始问题中的代码完全相同。