簡體   English   中英

將ajax響應從ISO-8859-1轉換為UTF8

[英]converting ajax response from ISO-8859-1 to UTF8

我使用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
echo iconv("WINDOWS-1255","UTF-8",$response);

響應不是ISO-8859-1編碼的,而是Windows-1255編碼的; 以這種方式解釋,字節就是מידעלמקבלבזקהחברההישראליתאין。 因此,請嘗試從Windows-1255轉換為utf-8。

您在問題中輸入的字符串

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

看起來像Windows 1255(希伯來語)代碼頁的Windows 1252(拉丁文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 )或自己完成。

在牆壁上敲了一下頭之后,我決定變得直截了當,並為角色創建了一個映射,使用起來非常容易。 否則我找不到解決方案。

這是代碼:

$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

'--enable-zend-multibyte'編譯PHP。
那請試試看

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

如果只需要轉換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM