чтение содержимого utf-8 из таблицы mysql - PullRequest
10 голосов
/ 10 сентября 2010

У меня есть таблица 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

Где моя ошибка?

Ответы [ 6 ]

23 голосов
/ 10 сентября 2010

Четыре хороших шага, чтобы всегда получить правильно закодированный текст 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.

6 голосов
/ 22 августа 2017

Установите кодировку как utf8 следующим образом:

$conn = new mysqli($servername, $username, $password, $dbname);
$conn->set_charset("utf8");
6 голосов
/ 10 сентября 2010

Вы не определяете свою HTML-страницу как UTF-8.См. этот вопрос о том, как это сделать.

Вам может также необходимо явно установить подключение к базе данных в UTF8.Выполнение

mysql_query("SET NAMES utf8;");

^ Поместите его прямо в сценарий подключения к базе данных или включите и УБЕДИТЕСЬ, что он был помещен перед выполнением любых необходимых запросов.Кроме того, для совместного размещения, пожалуйста, найдите время, чтобы убедиться, что вы установили его для правильного типа синтаксиса и general_ci, кажется, работает хорошо для меня при использовании.В качестве финала очистите кеш после того, как покачаете головой, установите в браузере правильную панель инструментов кодирования-> view-> encoding

Установка соединения с UTF8 после установления соединения решает проблему.Не делайте этого, если первый шаг уже работает.

0 голосов
/ 16 мая 2019

Я пробовал несколько решений, но единственное, которое сработало это Хари Дасс:

$ conn-> set_charset ( "utf8");

0 голосов
/ 21 марта 2017

Старые способы устарели.Если вы используете PHP> 5.0.5 и mysqli, новый синтаксис теперь такой:

$connection->set_charset("utf8")

Где $connection - ссылка на ваше соединение с БД.

0 голосов
/ 27 ноября 2014

попробуйте это:

mysql_set_charset('utf8', $yourConnection);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...