создаеться файл скриптом, впорос по кодировке создаваемого файла.

Тема в разделе "PHP", создана пользователем zagrenat, 8 май 2009.

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

    zagrenat

    Регистр.:
    26 дек 2006
    Сообщения:
    215
    Симпатии:
    57
    вобщем етсь два хостинга,

    один двиг и одна база клонированые
    разница в базах заключается в
    одна база в
    MySQL-кодировка: Windows Cyrillic (cp1251)
    и вторая в
    MySQL-кодировка: UTF-8 Unicode (utf8)

    Сопоставление соединения с MySQL: utf_unicod_ci и там и там.

    все таблицы храняться в utf8_general_ci

    есть скрипт который создает файл для я.маркета,

    и проблемма.
    там где MySQL-кодировка: Windows Cyrillic (cp1251) файл создаеться в cp1251 кодировке
    а где UTF-8 Unicode (utf8)
    соответсвенно в UTF-8 Unicode (utf8)

    а нужно чтоб был тоже в cp 1251
    .....

    може конечно предисловие большое ) но в пхп нуб,
    что попыталься сделать :
    прописал к переменным
    $w[name] = iconv("UTF-8", "CP1251", $w["name"]);

    и кусок кода
    PHP:
    $myq="select cat_id, cat_name, parent_id FROM ".$prefix."category where is_show=1 order by parent_id, cat_id";
    //echo $myq;
    $a=mysql_query($myq); //выводим все разделы по очереди

    $kol1=@mysql_numrows($a);
    for(
    $e=0$e<$kol1$e++)
    {
        
    $w=mysql_fetch_array($a);
        
    $w[name]  = iconv("UTF-8""CP1251"$w["name"]);//здесь был я кривыми ручками
        
    if ($w[parent_id]>0) {
            echo 
    "<category id=\"$w[cat_id]\" parentId=\"$w[parent_id]\">$w[cat_name]</category>\n";
        }
        else
        {
        echo 
    "<category id=\"$w[cat_id]\">$w[cat_name]</category>\n";
        }
        

    }



    где и что не так сделал ?
    так как все равно файл отдаеться в


    все спасибо -=Xardas=- помог )
     
  2. -=Xardas=-

    -=Xardas=-

    Регистр.:
    17 сен 2008
    Сообщения:
    250
    Симпатии:
    58
    попробуйте так:
    PHP:
    $myq="select cat_id, cat_name, parent_id FROM ".$prefix."category where is_show=1 order by parent_id, cat_id";
    //echo $myq;
    $a=mysql_query($myq); //выводим все разделы по очереди

    $kol1=@mysql_numrows($a);
    for(
    $e=0$e<$kol1$e++)
    {
        
    $w=mysql_fetch_array($a);
        if (
    $w[parent_id]>0) {
            
    $echovar .= "<category id=\"$w[cat_id]\" parentId=\"$w[parent_id]\">$w[cat_name]</category>\n";
        }
        else
        {
        
    $echovar .= "<category id=\"$w[cat_id]\">$w[cat_name]</category>\n";
        }
        

    }
    $echovar iconv("UTF-8""CP1251"$echovar);
    echo 
    $echovar;
     
    zagrenat нравится это.
  3. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    PHP:
    $a=mysql_query("SELECT 
    `cat_id`, `cat_name`, `parent_id` 
    FROM 
    $prefix `category` 
    WHERE `is_show`=1 
    ORDER BY `parent_id`, `cat_id` "
    ); //выводим все разделы по очереди

    if (mysql_num_rows($a) > 0);
    {
        
    $echovar=NULL;    
        while(
    $w mysql_fetch_assoc($a))
         { 
           
    $p $w['parent_id'] == "parentId=$w['parent_id']" NULL;
           
    $echovar .= '< category id='.$w['cat_id'].$p.'>'.$w['cat_name'].'</category>';
         }
     
    $echovar iconv("UTF-8""CP1251"$echovar);
      echo 
    $echovar
    Возможно ошибся в "parentId=$w['parent_id']" с кавычками ['parent_id']..проверьте
     
  4. maxfighton

    maxfighton Создатель

    Регистр.:
    18 дек 2008
    Сообщения:
    39
    Симпатии:
    7
    iconv() линуксовая функция не везде работает, восплоьзуйтесь лучше ее адаптированным аналогом
    /* конвертируем с *** в *** */
    $str = mb_convert_encoding($str, "***", "****");
     
  5. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    Ага, а mb_* типа везде установлен :D
    Да и медленнее она iconv().
     
Статус темы:
Закрыта.