xAJAX + MySQL + Кириллица. Нужна помощь

Тема в разделе "Базы данных", создана пользователем troll90945, 28 мар 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. troll90945

    troll90945 Читатель

    Заблокирован
    Регистр.:
    29 фев 2008
    Сообщения:
    109
    Симпатии:
    47
    Весь день убил на поиски решений проблемы с кириллицей. Так ничего и не нашел
    PHP код:
    require_once("config.php");
    require_once("ajax/xajax_core/xajax.inc.php");
    $xajax = new xajax();
    $xajax->setCharEncoding("windows-1251");
    $xajax->registerFunction("sendee");
    $xajax->processRequest();

    function sendee($aFormValues,$id) {
    global $mysql_connect, $mysql_selectdb, $time;
    $objResponse = new xajaxResponse();
    $id = intval($id);
    $mess = htmlspecialchars(strip_tags($aFormValues['messtext']));
    $query = "INSERT INTO chat (user_id,message,type,time) VALUES ('$id','$mess','0','$time')";
    $doQuery = mysql_query($query);
    $query = "SELECT * FROM chat WHERE user_id LIKE '$id' ORDER BY id DESC LIMIT 0,20";
    $doQuery = mysql_query($query);

    while ($message = mysql_fetch_array($doQuery))
    {
    $str .= $message['message']."<br>";
    }
    $newContent = $str;
    $objResponse->assign("chatblock","innerHTML", $newContent);
    return $objResponse;
    }

    Вместо "Привет. Как успехи?" в базу пишется такая канитель "?????????µ?‚. ???°?? ???????µ?…???"

    Может кто-нибудь сталкивался с этой проблемой. Помогите решить. Облазил форум XAJAX PROJECT. Ничего толкового так и не нашел.
     
  2. t00r.com

    t00r.com Создатель

    Регистр.:
    17 мар 2008
    Сообщения:
    30
    Симпатии:
    4
    PHP:
    function unicod($str) {
        
    $conv=array();
        for(
    $x=128;$x<=143;$x++) $conv[$x+112]=chr(209).chr($x);
        for(
    $x=144;$x<=191;$x++) $conv[$x+48]=chr(208).chr($x);
        
    $conv[184]=chr(209).chr(145);
        
    $conv[168]=chr(208).chr(129);
        
    $conv[179]=chr(209).chr(150);
        
    $conv[178]=chr(208).chr(134);
        
    $conv[191]=chr(209).chr(151);
        
    $conv[175]=chr(208).chr(135);
        
    $conv[186]=chr(209).chr(148);
        
    $conv[170]=chr(208).chr(132);
        
    $conv[180]=chr(210).chr(145);
        
    $conv[165]=chr(210).chr(144);
        
    $conv[184]=chr(209).chr(145);
        
    $ar=str_split($str);
        foreach(
    $ar as $b) if(isset($conv[ord($b)])) $nstr.=$conv[ord($b)]; else $nstr.=$b;
        return 
    $nstr;
    }
    PHP:
    echo unicod("<img src=/i/https.jpg border=0 align=absmiddle>&nbsp;Авторизация пройдена",'w','i');
     
  3. masto

    masto Прохожие

    зачем такие сложности?
    скорее всего можно обойтись iconv.
     
  4. dumber

    dumber

    Регистр.:
    23 апр 2007
    Сообщения:
    272
    Симпатии:
    123
    Была проблемы, решил предварительным iconv конвертированием в аякс и из аякса.
     
  5. masto

    masto Прохожие

    а не проще использовать utf8?

    PS довольно часто подобные проблемы решаются добавлением в скрипт строки
    header("Content-Type: text/html; charset=нужная_кодировка");
    ну это уже зависит от специфики скрипта
     
  6. dumber

    dumber

    Регистр.:
    23 апр 2007
    Сообщения:
    272
    Симпатии:
    123
    Лично я напротив все с UTF8 перевожу в cp1251 так как что пока сподручнее
     
  7. masto

    masto Прохожие

    с чего такая нелюбовь к юникоду?

    понимаю ещё в консоле, там есть тормоза с юникодом, но для web чем он не угодил?
     
  8. dumber

    dumber

    Регистр.:
    23 апр 2007
    Сообщения:
    272
    Симпатии:
    123
    Ничем особым, просто все наработки старые на win1251 а перестраиваться (хоть это и не сложно) лень :)
     
  9. bashful

    bashful Читатель

    Заблокирован
    Регистр.:
    16 фев 2008
    Сообщения:
    8
    Симпатии:
    2
    Проблемы с кодировками...Попробуйте использовать при выводе соответствующие заголовки charset, а в запросах БД SET NAMES.
     
  10. Jeurey

    Jeurey

    Регистр.:
    13 сен 2006
    Сообщения:
    419
    Симпатии:
    576
    dumber, а знаешь почему? потому, что нужно использовать свои наработки и модификации MVC - тот же отдельный MESSAGE-сигмент.

    Следал iconv('file.lang', $charset_x, $charset_y) и получил в другой кодировке :)
     
Статус темы:
Закрыта.