n =x;
而刚才在my.ini中所设置的CLIENT SECTION中的:default-character-set=utf8就已经同时修改了client、results及connection的值为utf8了。
今天刚实验了一下,页面也已经设置为UTF8的话,不需要再set names一下,在数据库客户端SQLyog也同样不需要!因为mysql初始化时已经从my.ini里读取到default_character_set=utf8并将以上三个变量都设置为utf8了。但如果页面是用别的编码的话,必须要set names为与之一致的编码。
测试代码xxx.php如下:
header('conten-type:text/html;charset=utf-8');
mysql_connect("localhost", "root", "pass
word") or die("Could not connect: " . mysql_error());
mysql_select_db("test");
mysql_query("set names utf8");//可以去掉这句!
$str = "CHN
软件开发有限公司,JPN ソフトウェア開発株式会社,KOR ,RUS Суд программного обеспечения".time();
$sql = "insert into tablename4 (varchar1, varbinary1 ) values ('".$str."','".$str."')";
echo $sql."
";
mysql_query($sql);
$result = mysql_query("SELECT id, varchar1 ,varbinary1 FROM tablename4");
while ($row = mysql_fetch_a
rray($result, MYSQL_BOTH)) {
printf ("ID: %s , varchar1: %s, varbinary1: %s
", $row[0], $row["varchar1"], $row["varbinary1"]);
}
mysql_free_result($result);
?>
如此设置之后,无论是在php页面插入任何utf8字符,在php页面里取出来的,在phpMyAdmin里取出来的,在mysql的第三方客户端软件里取出来的,都是一样的汉字了,不会再发现乱码,mysqldump出来的也是汉字。OK,问题解决。
【CMD那些事儿】
首先,在中文windows系统下,在cmd.exe里运行mysql.exe,有点特别。因为默认情况下,中文windows
系统cmd.exe里的字符编码是cp936即GBK,不能显示全部UTF8字符,所以在字符终端里看到乱码是正常现象,不要奇怪,这个问题在类Unix系 统的shell终端里可以解决的。
其次,由于CMD的输入输出格式不能改变,中文系统为GBK(可以将CMD与网页浏览器对比一下,浏览器会根据网页文件的字符编码来改变输入输出的字符编码),因此,如果希望在CMD里敲insert、select等输入输出中带有中文字符的语句时,必须保证myqsl的client、connection和re