0

JavaScript関数を使用してポップアップに(getを使用して)フォームデータを送信しています。どちらのページも utf-8 エンコーディングです。しかし、特別な値を間違って表示するポップアップ (� など)。この問題は Internet Explorer でのみ発生します。つまり、エンコーディングを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']; }
 } ?>
4

2 に答える 2

0

ファイルのエンコーディングを確認してください。Notepad ++などの一部のテキストエディタは、ファイルコードの内容をそのエンコーディングで保存します。

javascriptファイルはUTF-8エンコーディングではないと思います。

そしてそれがIE以外のすべてのブラウザで動作しているなら、あなたは地獄に行くことはありません。そのことをMicrosoftのせいにして、InternetExplorerを忘れてください。

于 2013-02-15T14:07:37.080 に答える
0

$_GET 変数では、これを使用します。

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

また

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

更新:私はテストしましたが、うまく見えます

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

役に立てば幸いです;)

サルドス。

于 2013-02-15T14:08:27.500 に答える