Eclipse SWT 浏览器显示反转的希伯来语

Eclipse SWT Browser Displays Reversed Hebrew

我在 Windows 7 上使用 JDK 1.8.0_201 和 Eclipse Oxygen (4.7.2)。我还安装了 Microsoft Internet Explorer 11.0。我的 java Swing 应用程序嵌入了一个 SWT Browser。我的 java 代码编写了一个纯文本文件,其中包含 "visual order" 中的希伯来语文本,并使用 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 像这样的命令...

-Dfile.encoding=UTF-8

我猜这是我电脑配置的问题,但我不知道是什么,我希望有人能指出我的方向。

问题的根源在于 <pre> 标签中的所有内容都是 "visual order"

通常情况下,浏览器会使用 "logical order" 来呈现希伯来语。

我建议尝试以下方法:

  1. <pre> 标签替换为 <div> 标签。

  2. <div><pre> 中玩 dir="rtl" attribute

  3. 让用户将您保存的代码编码为UTF-8。

我没有进行详尽的测试,但到目前为止,对 HTML 的以下更改已经解决了问题。我添加了标签 bdo 作为 pre 标签的子元素,即

<pre>
    <bdo dir="ltr">
        my Hebrew content
    </bdo>
</pre>

请注意,这是唯一的变化。所有其他代码都是 完全 ,因为它出现在我原来的问题中。