sql数据字符集/字符集,设置名称不起作用

时间:2013-10-12 23:59:02

标签: php mysql sql utf-8 character-encoding

我有下面的mysql连接:

$dbLink = mysql_connect('127.0.0.1', 'root', '');
mysql_set_charset('utf8', $dbLink);
mysql_select_db('test', $dbLink);
mysql_set_charset('utf-8'); 

它在1周前工作正常,但突然间它没有显示存储在数据库中的utf-8或阿拉伯语或unicode内容。但现在即使在数据库中,字符也像سید احمد Ø´Ûید Ú©ÛŒ صحیح一样被更改,并在php中显示相同的内容。在一切都很完美之前。并且内容正确显示。

即使是现在,当我在数据库中创建一个新条目时,它显示正常,但旧条目出现问题请帮助.......

我尝试过设置名称,mysql_set_charset&amp; <meta http-equiv="Content-Type" content="text/html; charset=utf-8">但没有任何事情发生。请帮助否则我的网站将被绞死......

1 个答案:

答案 0 :(得分:0)

使用MYSQLi,因为现在不推荐使用MYSQL。

要设置charset utf-8,请使用mysqli_set_charset(),如下所示:

$dbLink = mysqli_connect('127.0.0.1', 'root', '');
mysqli_set_charset($dbLink , 'utf8');
mysqli_select_db($dbLink, 'test');

如果由于任何原因它仍然显示错误的字符,请将其添加到文档的开头:

// Tell PHP that we're using UTF-8 strings until the end of the script
mb_internal_encoding('UTF-8');

// Tell PHP that we'll be outputting UTF-8 to the browser
mb_http_output('UTF-8');

<强>更新

从数据库中选择一些内容并使用iconv()输出值,看看它是否显示了wright charset:

<?php

    $dbLink = mysqli_connect('127.0.0.1', 'root', '');
    mysqli_set_charset($dbLink , 'utf8');
    mysqli_select_db($dbLink, 'test');

    function get_table_contents(){
        global $dbLink;
        $contents = array();

        $query = "SELECT * FROM ||YOUR TABLE HERE||";
        $result = mysqli_query($connection, $query);

        while($content = mysqli_fetch_assoc($result)){
            $contents[] = $content;
        }
        return $contents;
    }

    $data = get_table_contents();

?>
<html>
   <head></head>
   <body>
      <?php echo iconv(mb_detect_encoding($data[0]['||YOUR COLUMN||'], "UTF-8,ISO-8859-1"), "UTF-8", $data[0]['||YOUR COLUMN||']); ?>
   </body>
</html>