За последние 24 часа нас посетили 6823 программиста и 451 робот. Сейчас ищут 285 программистов ...

Кодировки

Тема в разделе "PHP для новичков", создана пользователем Kizer, 11 окт 2018.

  1. Kizer

    Kizer Новичок

    С нами с:
    19 авг 2018
    Сообщения:
    20
    Симпатии:
    0
    Здравствуйте, у меня есть сайт на кодировке utf-8(указанно в .htaccess и в meta), так же есть БД кодировка которой utf8_general_ci . Но когда я средством php выгружаю контент из БД, то вместо букв, отображаются знаки вопросов �������. Как решить эту проблему?
    P.s. в гугле не помогли ответы.
    --- Добавлено ---
    Только что, экспериментальным образом нашел вот такую странность: если убрать из htaccess и php файла все приравнивания кодировки к utf-8, то выводимые данные из БД становятся читаемыми, в отличие от всего сайта.
     
  2. MouseZver

    MouseZver Старожил

    С нами с:
    1 апр 2013
    Сообщения:
    4.766
    Симпатии:
    769
    Адрес:
    Лень
    сфоткай свой инструмент с открытым пунктом состоянии кодировки файла, выложи сюда
     
  3. Kizer

    Kizer Новичок

    С нами с:
    19 авг 2018
    Сообщения:
    20
    Симпатии:
    0
    Какой именно? Не особо понимаю, что именно требуется.
     
  4. MouseZver

    MouseZver Старожил

    С нами с:
    1 апр 2013
    Сообщения:
    4.766
    Симпатии:
    769
    Адрес:
    Лень
    чем скрипт редактируешь ?
     
  5. Kizer

    Kizer Новичок

    С нами с:
    19 авг 2018
    Сообщения:
    20
    Симпатии:
    0
    SublimeTextReader3
     
  6. MouseZver

    MouseZver Старожил

    С нами с:
    1 апр 2013
    Сообщения:
    4.766
    Симпатии:
    769
    Адрес:
    Лень
    а кодировка этого скрипта какая ? Уверен ?
     
  7. Kizer

    Kizer Новичок

    С нами с:
    19 авг 2018
    Сообщения:
    20
    Симпатии:
    0
    Кодировка скрипта в utf-8, знаю точно, ибо сам её задавал при создании
    --- Добавлено ---
    Проблема в том, что когда я убираю все файлы, в которых есть элементы указывающие на кодировку UTF-8, текст из БД выводится как надо, в отличии от текста на сайте
    --- Добавлено ---
    Может проблема в том что нужна другая кодировка для БД, возможна такая версия?
     
  8. miketomlin

    miketomlin Активный пользователь

    С нами с:
    9 авг 2016
    Сообщения:
    846
    Симпатии:
    120
    Этим ты только указываешь получателю, какая кодировка используется.

    Реальная кодировка определяется кодировкой файлов и кодировкой ответов от сервера БД. При подключении к БД указываешь, в каком виде нужно получать данные?
    --- Добавлено ---
    Используешь что-нибудь вроде mysqli_sеt_charset?
    --- Добавлено ---
    Нужно либо сервер БД настраивать на дефолтную отдачу данных в нужной кодировке, либо «принуждать» его к этому при каждом соединении.
     
  9. Kizer

    Kizer Новичок

    С нами с:
    19 авг 2018
    Сообщения:
    20
    Симпатии:
    0
    Находил что mysqli не понимает что такое utf-8, а только utf8
     
  10. miketomlin

    miketomlin Активный пользователь

    С нами с:
    9 авг 2016
    Сообщения:
    846
    Симпатии:
    120
    К чему вы это? Да, в методе set_charset нужно указывать utf8, потому что MySQL принимает кодировку именно в таком виде.
    --- Добавлено ---
    В общем гаданием мне чЁ-то в лом заниматься. Или выкладывайте больше инфы, или отдыхайте.
     
  11. Kizer

    Kizer Новичок

    С нами с:
    19 авг 2018
    Сообщения:
    20
    Симпатии:
    0
    Дам любую инфу что понадобится, я уже откровенно говоря задрался лазить по интернету.
    Вот файлы:
    Код (Text):
    1. AddDefaultCharset UTF-8
    2.  
    3. RewriteEngine on
    4. RewriteCond %{REQUEST_FILENAME} !-f
    5. RewriteCond %{REQUEST_FILENAME} !-d
    6. RewriteRule . index.php
    Это footer.php
    PHP:
    1.     </div>
    2.     <div id="footer">
    3.     <div id="downf">
    4.       <form id="form">
    5.         <input type="text" name="name" placeholder="Ваше имя" required><br>
    6.         <input type="text" name="phone" placeholder="Ваш телефон" required><br>
    7.         <textarea name="text" placeholder="Сообщение"></textarea><br>
    8.         <button>Отправить</button>
    9.       </form>
    10.     </div>
    11.     <div id="downf">
    12.       <li><a href="/privat/">Profile</a></li>      
    13.     </div>
    14.     <div id="downf">
    15.       <li><a href="/privat/">Profile</a></li>    
    16.     </div>
    17.     <div id="downf">
    18.     </div>
    19.   </div>
    20. </body>
    21. </html>
    Это index.php
    PHP:
    1. <?php
    2. $title = "News";
    3. include("../header.php"); ?>
    4. <?php
    5. require_once("db.php");
    6. if($connection == false){
    7.     echo "Error!";
    8.     echo mysqli_connect_errno();
    9.     exit();
    10. }
    11.  
    12. $query = mysqli_query($connection, "SELECT * FROM $dbarticles ORDER BY id DESC ");
    13.  
    14.  
    15.  
    16. if(mysqli_num_rows($query) == 0){
    17.     echo "There are no records!";
    18. }    else {
    19. while($article = mysqli_fetch_assoc($query)){
    20.     echo '<div id="new">';
    21.     echo '( '.$article['id'].' ) <a href=page.php?id='.$article['id'].'>'.$article['name'].'</a><br>';
    22.     echo $article['text'].'<br>';
    23.     echo '</div>';
    24.  
    25. }
    26.     }
    27. ?>
    28. <?php include("../footer.php"); ?>
    ЭТО header.php
    PHP:
    1. <!DOCTYPE html>
    2. <html lang="ru">
    3. <head>
    4.     <meta charset="utf-8">
    5.     <title>738 - <?php print $title; ?></title>
    6.     <link rel="shortcut icon" type="image/x-icon" href="/img/icon.ico">
    7.     <script src="/js/jquery.js"></script>
    8.     <script src="/js/ajax.js"></script>
    9.     <link href="style.css" media="screen" rel="stylesheet">
    10.     <script type="text/javascript" src="/js/scroll.js"></script>
    11.     <script type="text/javascript" src="/js/scroll2.js"></script>
    12.     <script type="text/javascript" src="/js/script.js"></script>
    13.     <link rel="stylesheet" type="text/css" href="/style.css">
    14.     <link rel="stylesheet" type="text/css" href="/fonts/font.css">
    15.     <meta name="viewport" content="width=device-width, initial-scale=1">
    16. </head>
    17. <body>
    18.     <div id="top">
    19.     <div class="pic">
    20.       <img src="http://kizer-shop.ru/img/5.png" class="pic">
    21.     </div>
    22.         <ul id="navbar">
    23.             <li><a href="/">Главная</a></li>
    24.       <li><a href="/news">Новости</a></li>
    25.       <li><a href="/merch">Товар</a></li>
    26.       <li><a href="/g7">G7</a></li>
    27.       <li><a href="/donate">Донат</a></li>
    28.       <li><a href="/contacts">Контакты</a></li>
    29.         </ul>
    30.     </div>
    31.     <div id="content">
    ВО ВСЕХ файлах кодировка UTF-8, на БД везде кодировка utf8_general_ci
     
  12. miketomlin

    miketomlin Активный пользователь

    С нами с:
    9 авг 2016
    Сообщения:
    846
    Симпатии:
    120
    Ну для разнообразия могли бы и на мой вопрос ответить. По поводу set_charset. А то самый интересный в этом плане файл так и не показали.
    --- Добавлено ---
    Хардкодить фактические данные при использовании БД как-то некрасиво. Вынесите хотя бы в отдельный файл, если это название всего сайта.
    --- Добавлено ---
    Я вам в др. теме давал ссылку на статью, где показано, как нужно оформлять шаблоны. И отделяете их от кода работы с БД.
    --- Добавлено ---
    Вообще всю работу с БД выполняйте до вывода "<!DOCTYPE html>".
    --- Добавлено ---
    Чистый статик можно не выполнять.
     
  13. Kizer

    Kizer Новичок

    С нами с:
    19 авг 2018
    Сообщения:
    20
    Симпатии:
    0
    Какой файл? Вроде бы все файлы для этой страницы показал. А set_charset вроде бы нигде не прописан
     
  14. miketomlin

    miketomlin Активный пользователь

    С нами с:
    9 авг 2016
    Сообщения:
    846
    Симпатии:
    120
    Даже так. Подключение к БД.

    Ну так используйте.

    Кстати, я посмотрел ваш сайт. Данные из БД там тянутся в ANSI (Windows-1251)!!!
    --- Добавлено ---
    Если не секрет, вы хотя бы студент? Или школьник?
     
  15. Kizer

    Kizer Новичок

    С нами с:
    19 авг 2018
    Сообщения:
    20
    Симпатии:
    0
    Мне 15, в сфере веб-разработки я месяц.
    Так, как понять, от куда в БД у меня cp1251? В настройках и БД и таблицы, идет сравнение в utf8_general_ci
     

    Вложения:

  16. miketomlin

    miketomlin Активный пользователь

    С нами с:
    9 авг 2016
    Сообщения:
    846
    Симпатии:
    120
    Сравнение и кодировка – это разные вещи! Кодировка может быть не только у БД, но и у таблицы и даже столбца! Также см. настройки сервера MySQL. На локалке под Win там может быть прописана и Win-кодировка дефолтной.
    --- Добавлено ---
    ОК, можете мне скинуть мыло в личку, чтобы отдельно пообщаться по поводу каркаса и не засорять эту ветку.
     
  17. miketomlin

    miketomlin Активный пользователь

    С нами с:
    9 авг 2016
    Сообщения:
    846
    Симпатии:
    120
    Что-нибудь из того, что я перечислил выше?
     
  18. Kizer

    Kizer Новичок

    С нами с:
    19 авг 2018
    Сообщения:
    20
    Симпатии:
    0
  19. miketomlin

    miketomlin Активный пользователь

    С нами с:
    9 авг 2016
    Сообщения:
    846
    Симпатии:
    120
    Что? Битые ссылки? Которые и светить-то не стоило.