PHP获取时,带有重音的MySql UTF8排序规则数据无法正确显示

时间:2012-04-01 21:17:38

标签: php mysql ajax non-ascii-characters

我使用PHP从MySQL数据库中获取一些具有UTF8归类(utf8_unicode_ci)的数据。我正在使用这段代码:

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;

}

然后从Ajax调用的php:

$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 个答案:

答案 0 :(得分:4)

您是否将UTF-8设置为数据库连接的默认字符集?

mysql_set_charset('utf8', $link);

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

此外,您的网页是否包含具有正确字符集的<meta>标记?

答案 1 :(得分:0)

这就像你现在的工作一样!

<?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);

&GT;

在这里更改数据库连接:($ dbLink = mysql_connect($ config_db_server,$ config_db_server_username,$ config_db_server_password);)