我的网站上有一个页面,它的主要内容来自旧的大型机。来自大型机的内容编码是 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,至少不是希伯来字母顺序。大型机上的转换可能是原因。我必须调查一下(我必须等到星期天,因为我无法直接访问服务器)。
最佳答案
file_get_contents获取以ISO 8859-1为字符编码的内容的问题。您必须通过函数创建流上下文 stream_context_create对于 file_get_contents 使用字符集 Windows-1255:
$opts = array('http' => array('header' => 'Accept-Charset: windows-1255,utf-8;q=0.7,*;q=0.7'));
$context = stream_context_create($opts);
$content = file_get_contents('my_url', false, $context);
iconv("cp1255", "UTF-8", $content);
关于php - 在 PHP 5 中将 windows-1255 转换为 UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20907388/