За последние 24 часа нас посетили 21027 программистов и 1622 робота. Сейчас ищут 1568 программистов ...

каким образом может дамп с кириллицей стать ????? utf-8 bug

Тема в разделе "PHP и базы данных", создана пользователем dj--alex, 22 мар 2010.

  1. dj--alex

    dj--alex Активный пользователь

    С нами с:
    29 ноя 2007
    Сообщения:
    184
    Симпатии:
    0
    создаю дамп через свою программу
    все великолепно, пока не попадается кириллица.

    добавлял и это для того чтобы точнее выявить что я сохраняю...
    $x=detectencoding($insertone); echo "Encoded ln : ".$x."<br>?";
    if (($x!=="utf-8")AND($sd[19]=="utf-8")) $insertone=iconv("windows-1251","utf-8",$insertone);
    но такое ощущение что ??? я уже получаю от Mysql

    Mysql если кодировка для работы с таблицей явно не указана а в SHOW CREATE
    ясно сказано ) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
    также в программе самой кодировка по умолчанию utf-8 (есть ли разница utf-8 ili utf8 ili UTF-8 ?)

    это я вижу уже в файле.

    REPLACE INTO `joomla`.`jos_menu` VALUES ('51','usermenu','???????? ???????','submit-an-article','index.php?option=com_content&view=article&layout=form','component','1','0','20','0','2','0','0000-00-00 00:00:00','0','0','2','0','','0','0','0');
    REPLACE INTO `joomla`.`jos_menu` VALUES ('52','usermenu','???????? ??????','submit-a-web-link','index.php?option=com_weblinks&view=weblink&layout=form','component','1','0','4','0','3','0','0000-00-00 00:00:00','0','0','2','0','','0','0','0');
    REPLACE INTO `joomla`.`jos_menu` VALUES ('53','othermenu','????????????? ????','joomlaportal','http://joomlaportal.ru/','url','-2','0','0','0','0','0','0000-00-00 00:00:00','0','0','0','0','menu_image=-1
     
  2. dj--alex

    dj--alex Активный пользователь

    С нами с:
    29 ноя 2007
    Сообщения:
    184
    Симпатии:
    0
    дампы программа в базу нормально любые заливает

    почему то проблема с получением данных от базы.

    определяю кодировку в файлах так

    function detectencoding ($string) {
    if (preg_match('//u', $string)) { return "utf-8";} else { return "default";};
    }

    //Дублирование лога в Mysql и функции поддержки и проверки.

    function detectmysqlencoding ($tablename,$connect) {
    global $dbtype;
    $query="SHOW CREATE TABLE `$tablename`;";
    $silent=0;$result=dbs_query ($query,$connect,$dbtype);
    $myrow = dbs_fetch_row ($result,$dbtype);
    $charsetaddr=cutpartstroke ($myrow[1],"DEFAULT CHARSET="," ");
    return $charsetaddr;
    }


    //отрезает часть строки между двумя фразами.
    function cutpartstroke ($stroka,$do,$posle) {
    $a1=strpos ($stroka,$do)+strlen ($do);
    $a2=strpos(substr($stroka,$a1),$posle) ;
    $res=substr ($stroka,$a1,$a2);
    return $res;
    }