Русский текст в AJAX

mit

Новичок
Русский текст в AJAX

Народ. Извините за обратно начатую тему про AJAX, но мне бы хотелось знать как получить текст посредством AJAX на рус языке. Ставлю кодировку window-1251 но вылазят непонятные символы. Как исправить, чтобы можно было брать текст на из базы на рус языке.
Буду рад любой ссылке. Только на поиск не отправляйте плизззз )))
 

mit

Новичок
Нет. Именно с помощью AJAX. Я видел где-то похожее.
 

Popoff

popoff.donetsk.ua
mit
а если убрать аякс, то символы будут понятными или нет? :)
 

Dreammaker

***=Ф=***
всё равно, не совсем понял, к чему относится"Нет".
1) Нет, текст из базы я получаю (простым запросом + echo ) в ненужной кодировке.
Или..
2) Нет, текст при простом запросе приходит и выводится в нормальной кодировке, а вот когда используется AJAX, то кодировка меняется.

Если 1) то решай проблему с базой.
Если второе, то нужно правильно указывать кодировку в XML
 

mit

Новичок
Вот как правильно указать кодировку в XML? Я ставлю window-1251 - не помогает! Ничего не выводит. Ставлю UTF-8 - все нормально работает! Как добиться желаемого результата?

-~{}~ 05.01.06 21:02:

Всмысле работает, но с англ текстом. В базе или хотя бы простую строчку взять для примера. Такие вот чудеса. (((
 

Линка

Новичок
mit
Если в базе текст лежит не в кодировке window-1251 то и на выходе 100% не будет руских символов.
Если же уж пришел на форум то вникай в посты - люди плохого не посоветуют.
Посмотри просто из базы текст приходит в нужной кодировке?
 

Мстислав

Новичок
UTF8 у Вас. Преобразовывать нужно.

Используйте функцию _ucs2EntitiesDecode, как в точке приёма данных так и в точке отправки данных клиенту. Функция принимает на вход что угодно, возвращает в windows-1251...

PHP:
global $scriptEncoding,$_encTables,$scriptDecodeMode;
$scriptEncoding="windows-1251";
$scriptDecodeMode="entities";
$_encTables = array(
'windows-1251'=>array(
            0x0402, 0x0403, 0x201A, 0x0453, 0x201E, 0x2026, 0x2020, 0x2021,
            0x20AC, 0x2030, 0x0409, 0x2039, 0x040A, 0x040C, 0x040B, 0x040F,
            0x0452, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
            0x0098, 0x2122, 0x0459, 0x203A, 0x045A, 0x045C, 0x045B, 0x045F,
            0x00A0, 0x040E, 0x045E, 0x0408, 0x00A4, 0x0490, 0x00A6, 0x00A7,
            0x0401, 0x00A9, 0x0404, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x0407,
            0x00B0, 0x00B1, 0x0406, 0x0456, 0x0491, 0x00B5, 0x00B6, 0x00B7,
            0x0451, 0x2116, 0x0454, 0x00BB, 0x0458, 0x0405, 0x0455, 0x0457,
            0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
            0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F,
            0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
            0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F,
            0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
            0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F,
            0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
            0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F,
        ),
'koi8-r'=>array(
            0x2500, 0x2502, 0x250C, 0x2510, 0x2514, 0x2518, 0x251C, 0x2524,
            0x252C, 0x2534, 0x253C, 0x2580, 0x2584, 0x2588, 0x258C, 0x2590,
            0x2591, 0x2592, 0x2593, 0x2320, 0x25A0, 0x2219, 0x221A, 0x2248,
            0x2264, 0x2265, 0x00A0, 0x2321, 0x00B0, 0x00B2, 0x00B7, 0x00F7,
            0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556,
            0x2557, 0x2558, 0x2559, 0x255A, 0x255B, 0x255C, 0x255d, 0x255E,
            0x255F, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565,
            0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x256B, 0x256C, 0x00A9,
            0x044E, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,
            0x0445, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043d, 0x043E,
            0x043F, 0x044F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
            0x044C, 0x044B, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044A,
            0x042E, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
            0x0425, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041d, 0x041E,
            0x041F, 0x042F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,
            0x042C, 0x042B, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042A
),
);
function _ucs2EntitiesDecode($data){
   if (is_array($data)) {
      $d = array();
      foreach ($data as $k=>$v) {
         $d[_ucs2EntitiesDecode($k)] = _ucs2EntitiesDecode($v);
      }
      return $d;
   } else {
      if (strpos($data, '%u') !== false) {
      $data = preg_replace_callback('/%u([0-9A-F]{1,4})/si', '_ucs2EntitiesDecodeCallback', $data);
   }
   return $data;
   }
}
function _ucs2EntitiesDecodeCallback($p){
   global $scriptEncoding,$_encTables,$scriptDecodeMode;
   $hex = $p[1];
   $dec = hexdec($hex);
   if ($dec==="38" && $scriptDecodeMode=='entities'){
      $c = "&";
   }else{
      if (is_callable('iconv')) {
         $c = @iconv('UCS-2BE', $scriptEncoding, pack('n', $dec));
      }else{
         $c = $this->_decUcs2Decode($dec, $scriptEncoding);
      }
      if (!strlen($c)) {
         if ($scriptDecodeMode=='entities') {
            $c = '&#'.$dec.';';
         }else{
            $c = '?';
         }
      }
   }
   return $c;
}
function _decUcs2Decode($code, $toEnc){
global $scriptEncoding,$_encTables;
if ($code < 128) return chr($code);
   if (isset($_encTables[$toEnc])){
      $p = array_search($code, $_encTables[$toEnc]);
      if ($p !== false) return chr(128 + $p);
   }
   return "?";
}
 

mit

Новичок
Вообщем проблему я решил с помощью JS функции unescape().
Спасибо всем за советы.
 

flash-vkv

Новичок
вобшето на стороне клиента нечего делать не надо кодеровка сама выставляется в зависи от кодировки принемаемова файла

попробуй загрузить файл, который грузеш аяксам, просто эксплоером и посмотри какая кодировка. если не русская то проблема со стороны сервера то делай след если XML.
header ("Content-type: application/xml");
echo '<?xml version="1.0" encoding="windows-1251" ?>';

если не удается получить русские символы от клиента то пробуй так
$namepoisk = convert_cyr_string(mb_convert_encoding($_POST["name"],"ISO-8859-5","utf-8"),"i","w");

а то что ты пробуеш это не то я и без его обхожусь прекрастно

-~{}~ 06.01.06 21:13:

header (' Content-Type: text/html; charset=windows-1251')
для случия если HTML
 

mvc_aaa

MvC of PHPClub
>> вобшето на стороне клиента нечего делать не надо кодеровка сама выставляется в зависи от кодировки принемаемова файла

Блин, что у вас с языком, милейший ?
Перечитайте 2 раза и посчитайте ошибки. Это жеж ужасно !!!
 

leonid_p

Новичок
ага, особенно названия переменных :)
($namepoisk = convert_cyr_string(mb_convert_encoding($_POST["name"],"ISO-8859-5","utf-8"),"i","w"); )
 

leonid_p

Новичок
тогда не всё в коде ладом, сударь :)))
всё, хватит оффтопика )
 

flash-vkv

Новичок
если ты знаеш как лудше поделись с людьми а так что тявкать жучкой
 

leonid_p

Новичок
лучше так чтобы было понятно всем, а не только тебе
мешанина русских и английских слов в названии перемеенной наводит на грустные мысли о качестве кода...
 

flash-vkv

Новичок
он работает при том всего в одну две строчки.
если считаеш что можеш лудше, двай валяй взгляну я на бравова молодца ...
 

Dreammaker

***=Ф=***
В последнем номере деталей (только, что прочитал), действительно описывается возможная проблема с кирилицей в AJAX и способ её устранения с помощью JS.

Но всё равно до этого момента непонятно, проблема была именно в аяксе или всё таки, в кодировке ,которую выдавала база...
 
Сверху