如何使用DataTable解决有关字符编码的问题?

时间:2018-03-17 15:15:09

标签: php jquery mysql

我经常在这个论坛上关注你的建议。现在我遇到了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>

提前致谢

1 个答案:

答案 0 :(得分:0)

首先,您需要在mysql中为表设置正确的编码:

ALTER TABLE table_name CONVERT TO CHARACTER SET utf8;

然后,您需要检查服务器响应中的编码标头 这个标题看起来像这样:

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

如果此标头中的字符集值不正确,您可以使用php或通过.htaccess(如果使用apache)重新定义此字符串值 或通过服务器配置文件。