因为服务器提供商的原因只能通过phpMyadmin管理数据库。使用show variables语句查询得到的当前数据库的信息如下:
character_set_clientlatin1
character_set_connectionutf8
character_set_databaseutf8
character_set_resultslatin1
character_set_serverlatin1
character_set_systemutf8
collation_connectionutf8_unicode_ci
collation_databaseutf8_unicode_ci
collation_serverlatin1_swedish_ci
我写了一个测试文件mytest.php代码如下(文件编码为UTF-8):
print "Hello";
$connection = mysql_connect('host','dbname','dbpass');
mysql_select_db('obbdb', $connection);
mysql_query("SET NAMES 'utf8'", $connection);
mysql_query("SET CHARACTER SET utf8", $connection);
mysql_query("SET CHARACTER_SET_CONNECTION=utf8", $connection);
mysql_query("SET SQL_MODE = ''", $connection);
$result = mysql_query ("SELECT * FROM navigator", $connection);
while ($row = mysql_fetch_array($result, 10))
{
foreach ($row as $attribute) {
print "{$attribute}";
print "\n";
}
}
?>
显示的是乱码。
如果修改代码如下,并将文件的编码改为ANSI。则能正常显示
print "Hello";
$connection = mysql_connect('host','dbname','dbpass');
mysql_select_db('obbdb', $connection);
//mysql_query("SET NAMES 'utf8'", $connection);
//mysql_query("SET CHARACTER SET utf8", $connection);
//mysql_query("SET CHARACTER_SET_CONNECTION=utf8", $connection);
mysql_query("SET SQL_MODE = ''", $connection);
$result = mysql_query ("SELECT * FROM navigator", $connection);
while ($row = mysql_fetch_array($result, 10))
{
foreach ($row as $attribute) {
print "{$attribute}";
print "\n";
}
}
?>
请问这是什么原因导致的乱码?如果要解决这个问题要怎么操作?