php在ie上获取数据编码


php get data encoding on ie

我正在用javascript函数向弹出窗口发送一些表单数据(带get)。两个页面都有utf-8编码。但是弹出窗口显示的特殊值错误(如�).此问题仅发生在Internet Explorer上。当我将ie编码更改为windows-1254时,它将恢复正常。页面编码应保持不变。使用mb_detect_encoding()检查$_GET数据;它给出了UTF-8的结果。知道是什么原因造成的吗?

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;
   }

编辑

我修复了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']; }
 } ?>

在$_GET变量中,使用以下内容:

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

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

更新:我用测试过,看起来很好

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

我希望它能有所帮助;)

Saludos。

检查文件编码。一些文本编辑器,如Notepad++,以该编码存储文件代码内容。

我认为javascript文件不是UTF-8编码的。

如果它适用于除IE以外的所有浏览器,你就不会下地狱。这要归咎于微软,忘记IE浏览器。