Отображение китайского текста на веб-странице - PullRequest
0 голосов
/ 24 января 2012

Об этом уже спрашивали, но озабоченность другого автора была больше связана с оригинальной кодировкой документа.

У меня есть база данных MySQL, содержащая текст на китайском языке. Сортировка, которую я использую для этих полей: utf8_unicode_ci. Используя phpMyAdmin и просматривая базу данных, текст на китайском языке выглядит так, как должен. Однако когда я пытаюсь отобразить этот текст на веб-странице, я получаю ????? на своем месте. Вот мой код:

<html>
    <?php
        header('Content-Type: text/html; charset=UTF-8');
    ?>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    </head>
    <body>
        <?php
        // Code opening database and retrieving fields and such...

Что-то мне не хватает? Я также пытался переместить вызов PHP header() выше тега <html>, но это тоже не работает.

РЕДАКТИРОВАТЬ: Вот код базы данных:

$con = mysql_connect("localhost", "name", "pass") or die('Sorry, could not connect to database server');
mysql_select_db("database_name", $con) or die('Sorry, could not connect to database');
$query = "SELECT id,field1,field2 FROM table1 ORDER BY id ASC";
$result = mysql_query($query) or die('Sorry, could not get recipes at this time ');

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
            $id = $row['id'];
            $var1= $row['field1'];
            $var2= $row['field2'];
            echo"ID:$id The contents are $var1 and $var2.<br><br>\n";
 }

ОБНОВЛЕНИЕ: Итак, я решил проблему с чтением сохраненных китайских символов как UTF-8 с использованием строки mysql_set_charset('utf8', $con);, но я обнаружил, что когда я хочу добавить в эту базу данных, китайский текст отображается как ????? снова. Например, если я сохраняю строку китайских символов в качестве переменной

$chinese = "炒猪肉与蔬菜";
echo "$chinese<br>";

Это показывает ????? снова. Любые подсказки?

Спасибо.

Ответы [ 3 ]

1 голос
/ 24 января 2012

Иногда фактическая кодировка файла неверна. Попробуйте открыть выходной файл, скажем, «Блокнот ++» и посмотрите, какую кодировку он обнаруживает в правом нижнем углу. Если это не utf-8, преобразуйте его в utf-8 в том же «Блокноте ++».

0 голосов
/ 24 января 2012

Ваша веб-страница в порядке, поэтому проблема может заключаться в кодировке SQL.Вы уже правильно установили кодировку.Если вы по-прежнему видите вопросительные знаки при извлечении данных, это, скорее всего, связано с неправильным сохранением.Всякий раз, когда вы хотите сохранить Unicode в базе данных, используйте N перед строками:

INSERT INTO table VALUES N'炒猪肉与蔬菜'
0 голосов
/ 24 января 2012

Это отличный ресурс: Обработка Unicode Front to Back в веб-приложении

Исправление для первоначального вопроса заключалось в добавлении строки mysql_set_charset('utf8', $con); после строки mysql_select_db();.

...