Чтение содержимого 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");