-1

我使用 Ajax 调用来接收希伯来语的响应。结果来自不同的站点并进行了ISO-8859-1编码。我的页面是UTF-8. 响应看起来像西里尔文:

îéãò ìî÷áì  áæ÷ äçáøä äéùøàìéú  àéï 

当我尝试使用 ajax 页面上的标题时:

header('Content-Type: text/html; charset=ISO-8859-1');

我得到这个结果:

îéãò ìî÷áì  áæ÷ äçáøä äéùøà ìéú à éï  

utf8_encode对反应似乎没有帮助。

我应该怎么做才能正确解码?

谢谢!

编辑:

我现在确实注意到显示数据的实际页面的编码为ISO-8859-1,但是查看响应的特定标头以及我看到字符集设置为的数据windows-1255

我现在所做的是将标题设置为:

header('Content-Type: text/html; charset=windows-1255');

在 php 方面,我添加iconv并简单地显:
echo iconv("WINDOWS-1255","UTF-8",$response);

4

4 回答 4

2

您在问题中给出的字符串

îéãò ìî÷áì  áæ÷ äçáøä äéùøàìéú  àéï 

看起来像 Windows 1255 (Hebrew) 代码页的 Windows 1252 (Latin I) 表示:

EE Windows 1252 î Windows 1255 מ - HEBREW LETTER MEM
E9 Windows 1252 é Windows 1255 י - HEBREW LETTER YOD
E3 Windows 1252 ã Windows 1255 ד - HEBREW LETTER DALET
F2 Windows 1252 ò Windows 1255 ע - HEBREW LETTER AYIN
20 Windows 1252   Windows 1255   - SPACE
EC Windows 1252 ì Windows 1255 ל - HEBREW LETTER LAMED
EE Windows 1252 î Windows 1255 מ - HEBREW LETTER MEM
F7 Windows 1252 ÷ Windows 1255 ק - HEBREW LETTER QOF
E1 Windows 1252 á Windows 1255 ב - HEBREW LETTER BET
EC Windows 1252 ì Windows 1255 ל - HEBREW LETTER LAMED
20 Windows 1252   Windows 1255   - SPACE
20 Windows 1252   Windows 1255   - SPACE
E1 Windows 1252 á Windows 1255 ב - HEBREW LETTER BET
E6 Windows 1252 æ Windows 1255 ז - HEBREW LETTER ZAYIN
F7 Windows 1252 ÷ Windows 1255 ק - HEBREW LETTER QOF
20 Windows 1252   Windows 1255   - SPACE
E4 Windows 1252 ä Windows 1255 ה - HEBREW LETTER HE
E7 Windows 1252 ç Windows 1255 ח - HEBREW LETTER HET
E1 Windows 1252 á Windows 1255 ב - HEBREW LETTER BET
F8 Windows 1252 ø Windows 1255 ר - HEBREW LETTER RESH
E4 Windows 1252 ä Windows 1255 ה - HEBREW LETTER HE
20 Windows 1252   Windows 1255   - SPACE
E4 Windows 1252 ä Windows 1255 ה - HEBREW LETTER HE
E9 Windows 1252 é Windows 1255 י - HEBREW LETTER YOD
F9 Windows 1252 ù Windows 1255 ש - HEBREW LETTER SHIN
F8 Windows 1252 ø Windows 1255 ר - HEBREW LETTER RESH
E0 Windows 1252 à Windows 1255 א - HEBREW LETTER ALEF
EC Windows 1252 ì Windows 1255 ל - HEBREW LETTER LAMED
E9 Windows 1252 é Windows 1255 י - HEBREW LETTER YOD
FA Windows 1252 ú Windows 1255 ת - HEBREW LETTER TAV
20 Windows 1252   Windows 1255   - SPACE
20 Windows 1252   Windows 1255   - SPACE
E0 Windows 1252 à Windows 1255 א - HEBREW LETTER ALEF
E9 Windows 1252 é Windows 1255 י - HEBREW LETTER YOD
EF Windows 1252 ï Windows 1255 ן - HEBREW LETTER FINAL NUN

要将该字符集转换为 UTF-8,您需要使用执行此操作的库(例如iconvmb_convert_encoding)或自己执行此操作。

于 2012-05-01T12:39:41.927 回答
2

响应不是 ISO-8859-1 编码的,但可能是 windows-1255 编码的;这样解释,字节是 מידע למקבל בזק החברה הישראלית אין。所以尝试从 windows-1255 转换为 utf-8。

于 2012-05-01T12:08:56.660 回答
0

在把头撞到墙上一段时间后,我决定直截了当,并为角色创建了一个非常容易工作的映射。否则我找不到解决方案。

这是代码:

$lat = array('à','á','â','ã','ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï','ð','ñ','ò','ó','ô','õ','ö','÷','ø','ù','ú');
$heb = array('א','ב','ג','ד','ה','ו','ז','ח','ט','י','ך','כ','ל','ם','מ','ן','נ','ס','ע','ף','פ','ץ','צ','ק','ר','ש','ת');
echo str_replace($lat, $heb, $response);

我还发现这些资源很有价值:

http://orwell.ru/test/CP/_?cp1252
http://orwell.ru/test/CP/_?cp1255

还有这个:

http://kanjidict.stc.cx/recode.php
于 2012-05-01T19:08:48.720 回答
-1

'--enable-zend-multibyte'.
那么请试试这个

mb_convert_encoding("FOO","UTF-8","ISO-8859-1");

如果你只需要转换。

于 2012-05-01T12:16:01.717 回答