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

vave

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

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

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

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

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

Куда копать?
 
Последнее редактирование:
В .htaccess прописана кодировка? кодировка utf-8 без BOM?
 
  • Нравится
Реакции: vave
В .htaccess прописана кодировка? кодировка utf-8 без BOM?
Никогда бы не подумал, что так быстро можно решить проблему!

Но почему то в одном фале поменялась кодировка а в другом нет... Пытаюсь разобраться
 
Последнее редактирование:
либо, если есть входной скрипт например index.php, то можно прописать в нем
PHP:
header('Content-Type: text/html; charset=utf-8');
 
В настройках домена прописать кодировку utf-8
 
если ты в гугл-хроме Для просмотра ссылки Войди или Зарегистрируйся нажми просмотр кода элемента а далее как на скрине - увидишь в какой кодировке страницу открывает браузер. Еще может быть что глюк с кодировкой возникает - из за изменения кодировки а не преобразования при таких манипуляциях кодировка кириллических символов безвозвратно превращается в ????
 
Странность в том что проблема со скриптом, альбома, скрипт сам по себе старенький, но очень простой, так вот после изменений htaccess в BOM, на странице с фотками (все названия стали нормальными накоец-то), а вот когда переходишь на файл с большой фоткой, там, тоже самое название (текст) остался вопросиками...
 
Дай ссылку на название с вопросиками, посмотри то откуда это название берется - там нормальная информация?
 


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

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 == 0 && $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>";

    }

    ?>
 
Назад
Сверху