【发布时间】:2014-01-21 08:14:47
【问题描述】:
我的网站中有一个页面,该页面的主要内容来自旧的大型机。来自大型机的内容编码是 windows-1255(希伯来语)。我网站的编码是 UTF-8。
起初我使用 iframe 来显示从大型机收到的答案。在那个解决方案中,我设置页面的编码没有问题,字符显示也很好,但是我在响应式设置页面时遇到了一些问题(我的所有网站都是响应式的)。
然后我尝试使用file_get_contents 获取内容并将其添加到正确的位置,但是所有字符看起来像这样:���� ��,然后我转换了内容:
iconv("cp1255","UTF-8",file_get_contents("my_url"));
结果是希伯来语颠倒过来的。例如,单词“nice”显示为“ecin”。
内容还包括HTML标签,不仅是希伯来语文本,所以我不能简单地用hebrev反转文本。
我看到在 PHP 4 中存在 fribidi_log2vis 函数,这似乎解决了我的问题,但 PHP 5 不支持它(我正在使用 PHP 5.3.3)。
有没有比将内容加载到 iframe 中更好的处理方式?
更新
我尝试获取我创建的测试文件(使用编码 windows-1255)并且我的原始代码工作正常。我怀疑我得到的内容不是 windows-1255,至少在希伯来字母顺序方面不是。大型机上的转换可能是原因。我必须调查一下(我必须等到周日,因为我无法直接访问服务器)。
【问题讨论】:
-
你试过mb_convert_encoding吗?
-
@Machavity mb_convert_encoding 也会产生反转文本。
-
我对希伯来语一无所知,但您似乎已成功转换为 UTF-8;也许你只需要调整你的 HTML 标记来通知浏览器这些文本必须显示为 RTL。
-
@ÁlvaroG.Vicario 我将页面设置为 RTL。其余的 UTF-8 希伯来文文本,如我的菜单文本,显示正常,但转换后的文本是相反的。
-
顺便说一句,PHP 5 支持 fribidi_log2vis() ,只是不再与 PHP 捆绑。请参阅PECL page 了解更多详细信息,甚至是 Windows 下载。
标签: php html encoding php-5.3 hebrew