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






Прежде всего вам нужно установить правильную кодировку для вашей таблицы в mysql:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8;
Затем вам нужно проверить заголовок кодировки в ответе вашего сервера. Этот заголовок выглядит так:
Content-Type: text/html; charset=utf-8
Если значение кодировки в этом заголовке неверно, вы можете переопределить его с помощью php или через .htaccess (если вы используете apache) или через файл конфигурации сервера.
Теперь, когда Wordpress использует данные, полученные при проверке состояния: Предупреждение: невозможно изменить информацию заголовка - заголовки уже отправлены пользователем (вывод начался в .....)
Это происходит из-за того, что вы добавили заголовок после того, как контент начал отправляться. Вам следует добавить заголовок через .htaccess или вы можете добавить его в файл index.php. Думаю, этот заголовок будет полезен для всех страниц вашего сайта.
Во-первых, используйте сопоставление utf8_general_ci для вашей базы данных. Когда вы устанавливаете соединение с mysqli, запустите запрос $ link-> query ("SET NAMES 'utf8'"); Затем проверьте и посмотрите, правильно ли хранятся ваши символы utf-8.