Как исправить проблему с кодировкой символов с помощью DataTable?

Я часто слежу за вашими предложениями на этом форуме. Теперь у меня проблема с плагином Datatable. На своем сайте я создал стол с едой. Эта таблица берет все данные из базы данных mysql и использует DataTable, чтобы иметь некоторые дополнительные плагины. Проблема в том, что DataTable некорректно кодирует некоторые символы, показывающие "??". Я видел, что кодировка mysql основана на latin1, а не на utf8. Как я могу принудительно использовать кодировку utf8?

Ниже код для доступа к базе данных:

<?php
$link = mysqli_connect ("XXXXXXXX", 
"XXXXX", "XXXXX", "XXXXX"); 

if (mysqli_connect_error()) {

    die ("Problemi di connessione con il server. Riprovare più tardi");

};
?>

Ниже код, созданный для таблицы:

<div style = "overflow-x:auto;">

          <table id = "tabellaAlimenti" class = "table table-striped">
              <thead>
                <tr>
                    <th>Nome</th>
                    <th>Categoria</th>
                    <th>Kcal</th>
                    <th>Carbo (g)</th>
                    <th>Prot (g)</th>
                    <th>Gras (g)</th>
                </tr>
              </thead>

              <tbody>
                  <?php

                    $query = "SELECT * FROM databaseAlimenti";

                    if ($result = mysqli_query($link, $query)) {

                        while($row = mysqli_fetch_array($result)) {

                            echo "<tr>";
                        echo "<td id='nome'><a href='http://wellness4yourself-com.stackstaging.com/alimento/?nome = " .urlencode($row['Nome']). "'>" . $row['Nome'] . "</a></td>";
                            echo "<td>" . $row['Categoria'] . "</td>";
                            echo "<td>" . $row['kcal'] . "</td>";
                            echo "<td>" . $row['Carboidrati (g)'] . "</td>";
                            echo "<td>" . $row['Proteine (g)'] . "</td>";
                            echo "<td>" . $row['Grassi totali (g)'] . "</td>";
                            echo "</tr>";

                        }
                      };
                    ?>
              </tbody>

            </table>

        </div>

 <script type = "text/javascript">

          $(document).ready(function() {

              $('#tabellaAlimenti').DataTable( {

                  select: true,
              });


          });


      </script>

заранее спасибо

Во-первых, используйте сопоставление utf8_general_ci для вашей базы данных. Когда вы устанавливаете соединение с mysqli, запустите запрос $ link-> query ("SET NAMES 'utf8'"); Затем проверьте и посмотрите, правильно ли хранятся ваши символы utf-8.

Michael Eugene Yuen 17.03.2018 16:25

Также используйте VARCHAR вместо CHAR

Michael Eugene Yuen 17.03.2018 16:31

Я пробовал то, что вы сказали, но, к сожалению, Datatable продолжает показывать эту проблему. Если я не использую DataTable, проблема не появится

Pasquale 17.03.2018 20:52

Вам нужно предоставить более подробную информацию. Сначала проверьте свою базу данных, ваши данные извлекаются напрямую с помощью php. Вы установили <meta http-Equiv = "Content-Type" content = "text / html; charset = utf-8"> в разделе <head>? Данные в вашей базе данных уже utf8? Я не вижу проблем с utf8 с базой данных, если ваши данные не закодированы с помощью json

Michael Eugene Yuen 17.03.2018 20:57
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
4
76
1

Ответы 1

Прежде всего вам нужно установить правильную кодировку для вашей таблицы в mysql:

ALTER TABLE table_name CONVERT TO CHARACTER SET utf8;

Затем вам нужно проверить заголовок кодировки в ответе вашего сервера. Этот заголовок выглядит так:

Content-Type: text/html; charset=utf-8

Если значение кодировки в этом заголовке неверно, вы можете переопределить его с помощью php или через .htaccess (если вы используете apache) или через файл конфигурации сервера.

Теперь, когда Wordpress использует данные, полученные при проверке состояния: Предупреждение: невозможно изменить информацию заголовка - заголовки уже отправлены пользователем (вывод начался в .....)

Pasquale 17.03.2018 20:53

Это происходит из-за того, что вы добавили заголовок после того, как контент начал отправляться. Вам следует добавить заголовок через .htaccess или вы можете добавить его в файл index.php. Думаю, этот заголовок будет полезен для всех страниц вашего сайта.

SlovyanskiyYehor 17.03.2018 22:25

Другие вопросы по теме