Чтение содержимого utf-8 из таблицы mysql
У меня есть таблица mysql с содержимым
Структура здесь:
![alt text]()
Теперь у меня есть одна запись:
![alt text]()
Я хочу прочитать и распечатать содержимое этой таблицы в html
Это мой код:
<?php
include("config.php");
$global_dbh = mysql_connect($hostname, $username, $password)
or die("Could not connect to database");
mysql_select_db($db)
or die("Could not select database");
function display_db_query($query_string, $connection, $header_bool, $table_params) {
// perform the database query
$result_id = mysql_query($query_string, $connection)
or die("display_db_query:" . mysql_error());
// find out the number of columns in result
$column_count = mysql_num_fields($result_id)
or die("display_db_query:" . mysql_error());
// Here the table attributes from the $table_params variable are added
print("<TABLE $table_params >\n");
// optionally print a bold header at top of table
if($header_bool) {
print("<TR>");
for($column_num = 0; $column_num < $column_count; $column_num++) {
$field_name = mysql_field_name($result_id, $column_num);
print("<TH>$field_name</TH>");
}
print("</TR>\n");
}
// print the body of the table
while($row = mysql_fetch_row($result_id)) {
print("<TR ALIGN=LEFT VALIGN=TOP>");
for($column_num = 0; $column_num < $column_count; $column_num++) {
print("<TD>$row[$column_num]</TD>\n");
}
print("</TR>\n");
}
print("</TABLE>\n");
}
function display_db_table($tablename, $connection, $header_bool, $table_params) {
$query_string = "SELECT * FROM $tablename";
display_db_query($query_string, $connection,
$header_bool, $table_params);
}
?>
<HTML><HEAD><TITLE>Displaying a MySQL table</TITLE></HEAD>
<BODY>
<TABLE><TR><TD>
<?php
//In this example the table name to be displayed is static, but it could be taken from a form
$table = "submits";
display_db_table($table, $global_dbh,
TRUE, "border='2'");
?>
</TD></TR></TABLE></BODY></HTML>
но я получаю???????? как результаты:
вот результат:
![alt text]()
Где моя ошибка?
Ответы
Ответ 1
Четыре хороших шага, чтобы всегда правильно кодировать текст UTF-8:
1) Запустите этот запрос перед любым другим запросом:
mysql_query("set names 'utf8'");
2) Добавьте это в свой HTML-заголовок:
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3) Добавьте это вверху вашего PHP-кода:
header("Content-Type: text/html;charset=UTF-8");
4) Сохраните файл с кодировкой UTF-8 without BOM
, используя Notepad ++ или любой другой хороший текстовый редактор/IDE.
Ответ 2
Вы не определяете свою HTML-страницу как UTF-8. См. этот вопрос о том, как это сделать.
Вам также может потребоваться прямое подключение к базе данных для UTF8. Выполнение
mysql_query("SET NAMES utf8;");
^
Поместите это прямо под ваше соединение с базой данных script или включите, а MAKE убедитесь, что вы разместили его перед выполнением любых необходимых запросов. Кроме того, для коллокации, пожалуйста, найдите время, чтобы убедиться, что
устанавливая его для вашего правильного типа синтаксиса, а general_ci, кажется, работает хорошо для меня, когда используется. Как финал, очистите свой кеш после удара головой, установите в браузере правильную кодировку → view- > encoding
Настройка соединения с UTF8 после установления соединения позаботится о проблеме. Не делайте этого, если первый шаг уже работает.
Ответ 3
Установите кодировку как utf8 следующим образом:
$conn = new mysqli($servername, $username, $password, $dbname);
$conn->set_charset("utf8");
Ответ 4
попробуйте следующее:
mysql_set_charset('utf8', $yourConnection);
Ответ 5
Старые способы устарели. Если вы используете PHP > 5.0.5 и с помощью mysqli теперь новый синтаксис:
$connection->set_charset("utf8")
Где $connection
- ссылка на ваше соединение с БД.
Ответ 6
Я попробовал несколько решений, но единственное, что сработало, это решение Хари Дасса:
$conn-> set_charset ( "utf8");