2013-02-15 63 views
0

我發送一些表單數據(與get)到一個帶有javascript函數的彈出窗口。 這兩個頁面都有utf-8編碼。但彈出顯示特殊值錯誤(如 )。此問題僅在Internet Explorer上發生。當我將編碼更改爲windows-1254時,它會恢復正常。頁面編碼應該保持不變。 使用mb_detect_encoding()檢查了$ _GET數據;它給出了UTF-8的結果。 任何想法可能導致這種情況?PHP獲取數據編碼即

function NewCustomer(field1,field2,field3){ 
OpenPopup('Customer/New.php?field1='+ field1 +'&field2='+ field2 +'&field3='+ field3 +'', 'NewCustomer', 'channelmode=0, directories=0, fullscreen=0, width=550, height=460, location=0, menubar=0, resizable=0, scrollbars=1, status=0, titlebar=1, toolbar=0', false); 
} 


echo $_GET['fieldname']; 


function OpenPopup(url, winname, features) 
    { 
    if(winname==''){ 
    window.open(url, winname, features, false); 
    return; 
    } 
    if (!findWindow(url, winname, features)) 
    { 
    var handle = window.open(url, winname, features, false); 
    if (handle != null) handle.focus(); 
    } 
    } 

    function findWindow(url, winname, features) 
    { 
    var handle = window.open('', winname, features, false); 
    if (handle != null) 
    { 
    if ((handle.location != 'about:blank') && (handle.location != '')) 
    { 
     handle.focus(); 
     return true; 
    } 
    } 
    return false; 
    } 

EDIT

予固定的iconv IE問題。但現在,問題開始在其他瀏覽器上。

iconv('windows-1254', 'UTF-8', $_GET['field']); 

上次編輯

這裏是最終溶液。

<?php if(isset($_GET['fieldname'])) { 
preg_match('/MSIE (.*?);/', $_SERVER['HTTP_USER_AGENT'], $matches); 
if (count($matches)>1){ echo iconv('windows-1254', 'UTF-8', $_GET['fieldname']); } else { echo $_GET['fieldname']; } 
} ?> 
+2

沒有代碼,我們都會猜測。 – 2013-02-15 14:01:47

+0

添加了代碼。 – milesh 2013-02-15 14:37:41

+0

OpenPopup是標準的PHP函數嗎?我找不到它的文檔。 – 2013-02-15 14:57:58

回答

0

檢查文件編碼。一些文本編輯器(如Notepad ++)以該編碼存儲文件代碼內容。

我認爲JavaScript文件不是UTF-8編碼。

如果它適用於所有瀏覽器,但IE瀏覽器,你不會下地獄。責怪微軟爲這個和FORGET Internet Explorer。

+0

選中,這兩個頁面都使用UTF-8編碼,無BOM。 Javascript在同一頁面。試圖給js添加charset =「utf-8」。 – milesh 2013-02-15 14:49:29

0

在您$ _GET變種,使用此:

echo utf8_encode($_GET['my_var']); 

echo utf8_decode($_GET['my_var']); 

更新:我與測試,外觀精緻

echo iconv("UTF-8", "ISO-8859-1//TRANSLIT", $field); 

我希望它能幫助;)

Saludos。

+0

utf8_decode使 >? utf8_encode使 >ð或þ(根據字符) 這兩個都不修復。 – milesh 2013-02-15 14:39:56

+0

在彈出式菜單的地址欄中,are是正確顯示的字段嗎? – Hackerman 2013-02-15 14:45:13

+0

是的,地址欄沒有問題。 New.php?field =şğç – milesh 2013-02-15 14:47:28