PDA

Просмотр полной версии : Пробема в AJAX скрипте - русская кодировка - в UTF8 приходят данные


Inform-buro
28.01.2008, 09:13
Как решить данную проблему? Я хочу получать данные в кодировке windows-1251, вот код скрипта:

function ajaxRead(){
receiveData=0;
var xmlObj = null;

if(window.XMLHttpRequest){
xmlObj = new XMLHttpRequest();
}else if(window.ActiveXObject){
xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
} else {
return;
}
xmlObj.onreadystatechange = function(){
if(xmlObj.readyState == 4){
var status=xmlObj.status;
document.getElementById('xxx').innerHTML = unescape(xmlObj.responseText);
}
}
xmlObj.open ('GET', 'index.php'+'?q='+Math.random(), true);
xmlObj.send ('');
}

данные index.php даёт в win1251, а на странице они появляются в utf8, т.к. получены AJAX-ом. А как бы их получать в win1251

wildlion
28.01.2008, 09:41
function decode_to_utf8($int=0)
{
$t = '';

if ( $int < 0 )
{
return chr(0);
}
else if ( $int <= 0x007f )
{
$t .= chr($int);
}
else if ( $int <= 0x07ff )
{
$t .= chr(0xc0 | ($int >> 6));
$t .= chr(0x80 | ($int & 0x003f));
}
else if ( $int <= 0xffff )
{
$t .= chr(0xe0 | ($int >> 12));
$t .= chr(0x80 | (($int >> 6) & 0x003f));
$t .= chr(0x80 | ($int & 0x003f));
}
else if ( $int <= 0x10ffff )
{
$t .= chr(0xf0 | ($int >> 18));
$t .= chr(0x80 | (($int >> 12) & 0x3f));
$t .= chr(0x80 | (($int >> 6) & 0x3f));
$t .= chr(0x80 | ($int & 0x3f));
}
else
{
return chr(0);
}

return $t;
}

function convert_unicode($t, $to = 'windows-1251')
{
$to = strtolower($to);

if ($to == 'utf-8') {

$t = preg_replace( '#%u([0-9A-F]{1,4})#ie', "decode_to_utf8(hexdec('\\1'))", utf8_encode($t) );
$t = urldecode ($t);

} else {

$t = preg_replace( '#%u([0-9A-F]{1,4})#ie', "'&#' . hexdec('\\1') . ';'", $t );
$t = urldecode ($t);
$t = @html_entity_decode($t, ENT_NOQUOTES, $to);

}

return $t;
}
это на php...
попробуй с этим "поиграться", должно чтонить получиться...

druzhkov
01.02.2008, 16:51
лично я в том скрипте, которые отдает аякс-данные, первой строчкой прописываю:

header('Content-type: text/html; charset=windows-1251');

может, это как-то поможет...

tank_
03.02.2008, 03:26
попробуй функцию iconv в php

Rambler's Top100