Данные сортировки MySql UTF8 с акцентами не отображаются должным образом при получении PHP - PullRequest
1 голос
/ 02 апреля 2012

Я получаю некоторые данные с сопоставлением UTF8 (utf8_unicode_ci) из базы данных MySQL с помощью PHP.Я использую этот фрагмент кода:

function advancedDatabaseSearch($pattern, $lpref) {

    $link = mysql_connect(DB_URL, DB_USER, DB_PWD);

    if (!$link) {
        return 'Could not connect: ' . mysql_error();
    }

    $esc_value = mysql_real_escape_string($pattern);
    $esc_lpref = mysql_real_escape_string($lpref);

    mysql_select_db(DB_NAME, $link);

    $query = "SELECT RAWVALUE FROM rawvalueitem "
        ."WHERE RAWVALUE LIKE '".$esc_value."' "
        ."AND LANGUAGE = '".$esc_lpref."' "
        ."ORDER BY RAWVALUE ASC";

    $result = mysql_query($query);

    $return = "";

    while($row = mysql_fetch_array($result)) {
        $return = $return.$row['RAWVALUE']." ";
    }

    mysql_close($link);

    return $return;

}

, а затем из php, вызванного Ajax:

$result = advancedDatabaseSearch($tttmp, $lpref);
echo $result;
return;

Тем не менее, когда я отображаю результат в текстовой области, акцентыне отображается должным образом:

enter image description here

С другой стороны, когда я получаю данные UT8 из файла:

if ( $file_loc != NULL ) {
    if ( file_exists($file_loc) ) {
        $handle = fopen($file_loc, "rb");
        $contents = fread($handle, filesize($file_loc));
        fclose($handle);
        $result = $contents;
    }
}

echo $result;
return;

У меня нет этой проблемы!!!Как я могу решить эту проблему при использовании PHP для извлечения данных из MySql?

Ответы [ 2 ]

4 голосов
/ 02 апреля 2012

Вы установили UTF-8 в качестве набора символов по умолчанию для вашего соединения с базой данных?

mysql_set_charset('utf8', $link);

http://www.php.net/manual/en/function.mysql-set-charset.php

Кроме того, есть ли на вашей странице тег <meta> с правильным набором символов?

0 голосов
/ 13 июля 2014

Это работает как ... вы сейчас!

<?php
    $config_db_server='localhost';
    $config_db_server_username='root';
    $config_db_server_password='';
    $config_db_database='test';
    $config_db_charset='utf8';
    $config_db_collation='utf8_general_ci';
    $config_table_prefix='class_';
    $config_live_site='http://localhost';
    $config_abs_path='C:\xampp\htdocs';
    $config_debug=0;

    $dbLink = mysql_connect($config_db_server, $config_db_server_username, $config_db_server_password);
    mysql_query("SET character_set_results=utf8", $dbLink);
    mb_internal_encoding('utf8');
    mysql_query("set names 'utf8'",$dbLink);

?> *

Измените здесь ваше соединение с БД: ($ dbLink = mysql_connect ($ config_db_server, $ config_db_server_username, $ config_db_server_password);)

...