我有下面的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">
但没有任何事情发生。请帮助否则我的网站将被绞死......
答案 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>