PHP Кодировка (Знаки вопроса)

Тема в разделе "Как сделать...", создана пользователем vave, 23 ноя 2015.

  1. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    364
    Симпатии:
    14
    Знаю что тема популярная, изъезжена годами, тысячи решений на форумах...
    Но мой случай уникален! :)
    Был сайт, всё с ним было хорошо, и вдруг слетела кодировка...

    Спустя пару дней, стал решать проблему, в майадмин, обнаружил всякие иероглифы, поменяв кодировку таблиц, ничего не поменялось, скачал базу на комп, через онлайн декодер поменял иероглифа на текст, добавил к нужным таблицам CHARACTER SET utf8, загрузил обновленную базу, заглядываю в таблицы, и ура, текст стал адекватным.

    Перехожу на сайт, знаки вопроса, понимаю что так быть не должно, везде UTF-8... И в майадмин кодировка отображается верно.

    Тыкаю разную кодировку в браузере, вопросики ни на что не меняются.

    Копирую сайт на локальную сеть (Denwer), и вуаля! С кодировкой никаких проблем.

    Куда копать?
     
    Последнее редактирование: 23 ноя 2015
  2. javx

    javx

    Регистр.:
    28 авг 2015
    Сообщения:
    520
    Симпатии:
    239
    В .htaccess прописана кодировка? кодировка utf-8 без BOM?
     
    vave нравится это.
  3. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    364
    Симпатии:
    14
    Никогда бы не подумал, что так быстро можно решить проблему!

    Но почему то в одном фале поменялась кодировка а в другом нет... Пытаюсь разобраться
     
    Последнее редактирование: 23 ноя 2015
  4. Casper_R

    Casper_R Создатель

    Регистр.:
    3 май 2007
    Сообщения:
    85
    Симпатии:
    25
    либо, если есть входной скрипт например index.php, то можно прописать в нем
    PHP:
    header('Content-Type: text/html; charset=utf-8');
     
  5. workmit

    workmit Создатель

    Регистр.:
    29 авг 2008
    Сообщения:
    22
    Симпатии:
    9
    В настройках домена прописать кодировку utf-8
     
  6. javx

    javx

    Регистр.:
    28 авг 2015
    Сообщения:
    520
    Симпатии:
    239
    если ты в гугл-хроме https://yadi.sk/i/fPC6TFpnkfQQH нажми просмотр кода элемента а далее как на скрине - увидишь в какой кодировке страницу открывает браузер. Еще может быть что глюк с кодировкой возникает - из за изменения кодировки а не преобразования при таких манипуляциях кодировка кириллических символов безвозвратно превращается в ????
     
  7. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    364
    Симпатии:
    14
    Странность в том что проблема со скриптом, альбома, скрипт сам по себе старенький, но очень простой, так вот после изменений htaccess в BOM, на странице с фотками (все названия стали нормальными накоец-то), а вот когда переходишь на файл с большой фоткой, там, тоже самое название (текст) остался вопросиками...
     
  8. javx

    javx

    Регистр.:
    28 авг 2015
    Сообщения:
    520
    Симпатии:
    239
    Дай ссылку на название с вопросиками, посмотри то откуда это название берется - там нормальная информация?
     
  9. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    364
    Симпатии:
    14


    То что на первой ссылке внизу ромбики с вопросиками, это не то, это к базе не относится, так что легко правится
     
  10. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    364
    Симпатии:
    14
    Это весь альбом с картинками

    PHP:
    <?php

    mysql_query 
    ("set_client='utf8'");
    mysql_query ("set character_set_results='utf8'");
    mysql_query ("set collation_connection='utf8_general_ci'");
    mysql_query ("SET NAMES utf8");

    if(
    $conf[featured]) $first "featured DESC,"; else $first "";

    $result mysql_query("SELECT * FROM $dblist $where ORDER BY $first $_GET[srt] LIMIT $start$_GET[p]"$link);

    if(
    mysql_num_rows($result)) {



        
    $n 0;

        echo 
    '<ul class="gallery">';

        while(
    $row mysql_fetch_array($result)) {

            

            
    // determine which image to display

            
    if($row[images]) {



                
    $image mysql_query("SELECT fname FROM $dbimgs WHERE listid='$row[id]' ORDER BY id ASC LIMIT 1"$link);

                
    $image mysql_fetch_array($image);

                
    $image "thumbs/".$image[fname];



            } else {



                
    $image "common/no-photo-thumb.jpg";



            }



            
    // make data display-friendly

            
    $row safe_data($row'display');



            
    // create variable string to pass

            
    $show "show.php?menu=show&id=$row[id]";

          


            echo 
    '<li>';

            

      echo 
    "<p><a href='$show'><img title='$row[make]' style='border: 1px solid #8E2411; padding:3px;' src='$image' alt='' /></a></p>";







            if(
    $row[ebay_url]) echo "";

       

            else echo 
    "<p align='left'><font face='Arial' color='#FFFFFF' style='font-size:10px; margin-top:-5px;' class='header-title'>$row[make]</font></p>";



           echo 
    '</li>';

        }

        echo 
    '</ul>';

        

    } else {



        echo 
    "<div id='msg-alert'>We're sorry, no listings could be found that match your query.</div>";



    }

    ?>

    а тут сама картина (с вопросиками)

    PHP:
    <?php

    mysql_query 
    ("set_client='utf8'");
    mysql_query ("set character_set_results='utf8'");
    mysql_query ("set collation_connection='utf8_general_ci'");
    mysql_query ("SET NAMES utf8");


    echo 
    "
           
                    <table border='0' width='100%' id='table1' cellspacing='5' cellpadding='0'>
                        <tr>
            <td width='50%'><div style='position: absolute; width: 500px; margin-top:-15px; line-height: 25px;'>
    <font face='Tahoma' style='font-size: 17pt' color='#FFFFFF'>
    $row[make]</font></div></td>
            <td><p align='right'>

            <span style='font-size: 11pt'>

    <a href='javascript:history.go(-1)' mce_href='javascript:history.go(-1)'>
            <font face='Arial' color='#FFFFFF'  style='text-decoration: none'>
            <span style='text-decoration: none'><img border='0' src='back.png'  width='35' height='35'></span></font></a></span></b><font color='#FFFFFF'  style='text-decoration: none'><span style='font-size: 11pt'><font face='Arial'>
    </font></b></span></font></p>


            </td>
        </tr>
    </table>




           
           
           
    "
    ;

    ?>



           
           



           
           
    <table class='display' width='670' border='0' cellpadding='0' cellspacing='0'>



        <tr>

            <td width='390' valign='top'>

                <font color="#FFFFFF">

                <?php
                
    if($row[images]) {
                   
                    if(
    $row[images] > 1) echo "";
                   
                    echo 
    "<a href=\"javascript:new_window('slideshow.php?id=$_GET[id]'+'&picnum='+picnum, ',type=fullWindow,fullscreen,scrollbars=yes');\"><img  class='none' name='large' src='images/$image_set[0]' alt=''/>";

                     echo 
    "</a></p>";
                   
                    
    // if there is more than one image, display the others as thumbnails
                    
    if($row[images] > 1) {
                       
                        echo 
    "<table border='0' cellpadding='0' cellspacing='0'>";
                        echo 
    "<div style='width:420px;'>";
                       
                        
    $n 1;
                        foreach(
    $image_set as $image) {
                       
                           
                            echo 
    "<a href=\"javascript:swap2('large', '$image'," strval($n-1) . ");\"><img src='thumbs/$image' width='80' align='left'/ ></a>";
                           
                           
                            if(!(
    $n 3) && $n count($image_set)) echo "</tr><tr>";
                            
    $n++;
                        }
                       
                        echo 
    "</div>";
                        echo 
    "</table>";
                       
                                    }
                   
                } else {
               
                    echo 
    "<img src='common/no-photo-large.jpg' alt=''/>";
                   
                }
                
    ?>

            </font>

            </td>

           

            <td width='10'>&nbsp;</td>

           

            <td width='270' valign='top'>

                <table class='info' width='270' border='0' cellpadding='0' cellspacing='0'>

                    <?php
                    
    echo "<tr><td colspan='2'></td></tr>";

               



           

                   

                   

                   


                   

                    
    // dealership information

                    
    if($conf[show_dealer]) {

           



                                if(
    $row[description]) {

           

            echo 
    "<tr><td colspan='0' style='color:#fff;'><div style='padding:10px;'>".nl2br($row[description])."</div></td></tr>";

        }

                       
                    }

                   

                    
    // salesperson information

                    
    if($user[contact]) {

                       

                        echo 
    "<tr><td colspan='2'><hr/></td></tr>";

                       

                       

                       

                       

                        echo 
    "";

                        if(
    $user[phone]) echo "<tr><td>Phone Number:</td><td>$user[phone]</td></tr>";

                   

                    }

                   

                    echo 
    "<tr><td colspan='2'><hr/></td></tr>";

                   

                    
    // additional details

                    
    if($row[exterior]) echo "<tr><td>Exterior Color:</td><td>$row[exterior]</td></tr>";

                    if(
    $row[interior]) echo "<tr><td>Interior Color:</td><td>$row[interior]</td></tr>";

                    if(
    $row[doors]) echo "<tr><td>Doors:</td><td>$row[doors]</td></tr>";



                    if(
    $row[drive]) echo "<tr><td>Drive Train:</td><td>$row[drive]</td></tr>";

                   

                    
    // engine details

                    
    if($row[engine]) echo "<tr><td>Engine:</td><td>$row[engine]</td></tr>";

                    if(
    $row[top_speed]) echo "<tr><td>Top Speed:</td><td>$row[top_speed]</td></tr>";

                    if(
    $row[horsepower]) echo "<tr><td>Horsepower:</td><td>$row[horsepower]</td></tr>";

                    if(
    $row[torque]) echo "<tr><td>Torque:</td><td>$row[torque]</td></tr>";

                    if(
    $row[towing]) echo "<tr><td>Towing Capacity:</td><td>$row[towing]</td></tr>";

                   

                    
    ?>                       

                </table>

            </td>

        </tr>

       

        <?php

        
    // listing description

       

       

        // listing features

        
    if($row[features]) {

            echo 
    "<tr><td colspan='3'><hr/></td></tr>";

            echo 
    "<tr><td colspan='3'>";

            
    $tmp explode("\n"$row[features]);

            foreach(
    $tmp as $key => $value) if(!trim($value)) unset($tmp[$key]); else $tmp[$key] = trim($value); // remove empty lines

            
    $tmp array_unique($tmp); // remove duplicate entries

            
    $cnt count($tmp);

            
    $num ceil($cnt 4);

            echo 
    "<table width='100%' border='0' cellpadding='0' cellspacing='0'>";

            echo 
    "<tr>";

            echo 
    "<td style='text-align:left;' width='25%' valign='top'><ul>";

            
    $n 1;

            foreach(
    $tmp as $value) {

                echo 
    "<li>$value</li>";

                if(
    $n $num == && $n $cnt) echo "</ul></td><td style='text-align:left;' width='25%' valign='top'><ul>";

                
    $n++;

            }

            echo 
    "</ul></td></tr>";

            echo 
    "</table>";

            echo 
    "</td></tr>";

        }

        
    ?>