您的位置:首页 > 数据库 > MySQL

mysql字符集产生乱码的简单讲解

2008-03-14 02:45 267 查看
  我们可以用下面命令检查mysql当前字符集信息:

  解决办法吗?当然也很简单,网页上随便一搜就能搜到。

  但我多少感觉有些不舒服,每次查询前都要写mysql_query(‘set name gbk’);。这一点我挺不满意的。于是我又开始搜索,结果我找到了下面将要讲到的配置方法

  于是我用命令提示符打开了mysql。测试发现在命令提示符下操作mysql一切正常。弄到这里我的头都大了。

  为什么中文字却能不加转换的插入到数据库中?

  带着这两个问题我又打开命令提示符。执行查询操作,结果显示的全是乱码(当时我想的是:文字应该为gbk编码)。于是我又执行:set names gbk; 把这个数据库字符集改为gbk字符集。再执行查询结果显示的全部是问号。这到底是怎么回事,我真的不想再研究了。

  我想看到这里大家已经应该明白了,下面我做一个小总结吧。

  (1) 在mysql5.0.45环境下,数据库把由php传递的数据默认为latin1 (iso-8859-1) 字符集来处理。即把latin1转换为utf-8,然后插入。

  (3) cmd模式下操作mysql,和用php操作在字符集处理上是两种概念。cmd下操作mysql,mysql会把cmd下的数据默认为mysql默认的字符集转换为utf-8后处理。而处理php数据mysql会默认为 latin1 数据做处理。

  因为我只是在本地作测试,为了测试时少写一行mysql_query(“set names gbk”)。所以我把 my.ini 的 [ mysql ] 栏default-characte_set 改为 latin1。这样无论自己在本地测试或是cmd下操作mysql都很方便。但是如果你用的是phpmyadmin的话,可能会显示乱码,解决办法就是安装一个支持字符集为 latin1的phpmyadmin。字符集和字符集校对都为 latin1 ,就能正常显示了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: