Возникли проблемы с Php, Mysql и UTF8 - PullRequest
3 голосов
/ 18 мая 2011

Проблема, простая и раздражающая.


Я просто пытаюсь напечатать список имен, собранных из моей базы данных MySQL.база данных и таблицы настроены на использование utf8.Например, 'å, ä, ö' выводит как �.Не могу поверить, что у меня все еще есть эта проблема.

enter image description here

Конечно, Latin1 решает проблему.Дело в том, что я должен использовать utf8, поскольку я делаю некоторый json_encode для отправки данных в ajax-скрипт.

Должен ли я преобразовать данные в utf8, прежде чем их вернуть?Кажется странным, я должен был ..

Ответы [ 2 ]

4 голосов
/ 18 мая 2011

Преобразовать utf8_general_ci в utf8_unicode_ci ...

Попробуйте выполнить запрос SET NAMES UTF8 после подключения к базе данных ...

function connect($server, $database, $username, $password, $charset = "UTF8"){
    $link = mysql_connect($server, $database, $password);
    if(!$link){
        die("Unable to connect to database server.");
    }
    mysql_selectdb($database);
    if(function_exists("mysql_set_charset")){
        mysql_set_charset($charset, $link);
    }else{
        mysql_query("SET NAMES $charset");   
    }
}

Также убедитесь, что это есть (или через header ()) в вашем HTML ...

<meta http-equiv="content-type" content="text/html; charset=utf-8" />
0 голосов
/ 18 мая 2011

Две вещи, которые нужно сделать ...

  1. Убедитесь, что заголовок HTML отправляет правильный набор символов:

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

  2. Используйте utf_encode() при добавлении ваших имен в массив.Строка в вашем должно быть

    $guests[] = array_map('utf8_encode', $row);

...