php - 在 PHP 5 中将 windows-1255 转换为 UTF-8

标签 php html encoding php-5.3 hebrew

我的网站上有一个页面,它的主要内容来自旧的大型机。来自大型机的内容编码是 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/

相关文章:

每次单击按钮时,PHP 函数无法重新检查 IP 检查

ios - timedMetaData 值的编码错误

java - 试图理解此代码行为

php - Laravel api类异常处理

javascript - 单击 html/javascript 中的按钮时更改图像

html - ubuntu 中的 css @font-face 不起作用

java - HTTPURLConnection Java header 中的 UTF-8 字符

video - 如何解码使用 FFMPEG 编码的实时流?

php - 错误捕获 LOAD DATA LOCAL INFILE 的最佳方法?

javascript - 使用隐藏输入是在外部 JavaScript 文件中检索 php 变量的有效方法吗?