2014-03-25 157 views
3

我想一個UTF8字符串轉換爲CP1255(希伯來文)UTF8到CP1255轉換

我試圖運行下面的(我使用detect_encoding因爲我的一些輸入不是UTF8):

foreach($param as $key=>$value){ 
    $newval = iconv(mb_detect_encoding($value),"cp1255",$value); 
    $querystr .= $key."=".$newval."&"; 
} 

反正結果就是所有的希伯來字母返回好的符號, 和所有其他(英文/數字)的預期,並希望保持不變。

我該如何正確地做到這一點?

+1

正是你_see_符號?你有(雙/ tripple-)檢查這個媒體是否知道cp1255編碼?例如。在瀏覽器中檢查頁面屬性,看它是否真的切換到希伯來語。 – VolkerK

+0

在Chrome控制檯上 - >網絡 - >響應選項卡(使用ajax)也嘗試過對結果運行mb_detect_encoding並獲得「UTF-8」 –

+1

哦,ajax ...在這種情況下,爲什麼不堅持使用utf-8?如果你看看XMLHttpRequest等的W3C規範,你會發現遍地都會使用「使用utf-8」,「總是utf-8」,「強烈鼓勵使用utf-8」。 – VolkerK

回答

6

我已經找到了解決辦法:

foreach($param as $key=>$value){ 
    $value_encoding = mb_detect_encoding($value); 
    if($value_encoding == "UTF-8"){ 
     $newval = iconv($value_encoding,"cp1255",$value); 
    }else{ 
     $newval = $value; 
    } 
    $endpoint = add_query_arg($key,$newval,$endpoint); 
} 

$content = file_get_contents($endpoint); 
+0

mb_detect_encoding本身已經不是100%可靠的,分別在每個參數上做它沒有太大的意義 –