Я отправляю некоторые данные формы (с get) во всплывающее окно с функцией javascript. Обе страницы имеют кодировку utf-8. Но всплывающее отображение неправильных значений (например, ). Эта проблема возникает только в Internet Explorer. Он возвращает нормальное значение, когда я изменяю, т.е. кодирую, на windows-1254. Кодирование страниц должно оставаться таким же. Проверяемые данные $ _GET с помощью mb_detect_encoding (); он дает результат 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; }
РЕДАКТИРОВАТЬ
Я исправил проблему IE с помощью iconv. Но теперь проблема началась с другими браузерами.
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']; } } ?>