我發送一些表單數據(與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']; }
} ?>
沒有代碼,我們都會猜測。 – 2013-02-15 14:01:47
添加了代碼。 – milesh 2013-02-15 14:37:41
OpenPopup是標準的PHP函數嗎?我找不到它的文檔。 – 2013-02-15 14:57:58