将ajax响应从ISO-8859-1转换为UTF8

时间:2012-05-01 12:00:07

标签: php ajax character-encoding

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

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

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

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

我得到了这个结果:

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

utf8_encode似乎没有帮助。

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

谢谢!

修改

我现在注意到显示数据的实际页面的编码为ISO-8859-1,但查看带有数据的响应的特定标头,我看到charset设置为windows-1255

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

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

在php的一边,我添加了iconv,只需回显
        的 echo iconv("WINDOWS-1255","UTF-8",$response);

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

您在问题中提供的字符串

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

看起来像Windows 1255(希腊语)代码页的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)或自行完成。

答案 2 :(得分: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

答案 3 :(得分:-1)

使用'--enable-zend-multibyte'编译PHP 那么请试试这个

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

如果您只需转换。