MySQL中默认字符集的设置有四级:服务器级,数据库级,表级 。最终是字段级 的字符集设置
PHP 乱码
mysql_query("set name 'utt8'")
phpmyadmin里乱码
phpMyAdmin的 ----config.inc.php-----中有没有设置,没有加上
$cfg['DefaultCharset']='utf-8';
或 mysql->my.ini 如没有增加:
[client]
default-character-set=utf8
[mysqld]
character-set-server = utf8
新创建的表的缺省字符集是latin1,而不是我们想要的。如果数据量不大的话,可以考虑用编辑器把它去掉或者改成utf8,如果数据量大的 话可以考虑用sed,
在phpmyadmin table----》操作----》排序规则:utf8_general_ci ------选择你想设置的字符格式
注:一般数据库也要选择设置字符--- 排序规则:utf8_general_ci
当前联接系统参数
数据库表中字段的字符集设置,查看
mysql> show create table test
Table: test
Create Table: CREATE TABLE `test`
(`a` varchar(100) default NULL
) ENGINE=InnoDB DEFAULT <span style="color:#cc0000;">CHARSET=utf8</span>
1 row in set (0.00 sec)
"DOS" CMD窗口
mysql> set names 'utf8';
ADO.NET, ADO中
可以连接字符串中加入CharSet=UTF8;
类似指令以说明connection的字符集。
Server=myServerAddress;
Database=myDataBase;
Uid=myUsername;
Pwd=myPassword;
CharSet=UTF8;
jdbcodbc桥接
Class.forName(sun.jdbc.odbc.JdbcOdbcDriver) ;
java.util.Properties prop = new java.util.Properties();
prop.put( " charSet " , " Big5 " );
prop.put( " user " , username);
prop.put( " password " , password);
// Connect to the database
con = DriverManager.getConnection(url, prop);
存储过程参数乱码
create procedure t ( name char(10) charset 'gbk')