Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.5.27 Source distribution
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    latin1   // server charset 和 db charset有什么关系?
Db     characterset:    utf8   
Client characterset:    utf8
Conn.  characterset:    utf8
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.5.27 Source distribution
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    latin1
Db     characterset:    latin1             // latin字符集不能输入中文么?
Client characterset:    utf8
Conn.  characterset:    utf8server charset可以修改么?

解决方案 »

  1.   

    // server charset 和 db charset有什么关系?
    没有必然联系,但会综合影响文字输入。建议详细阅读一下MYSQL官方免费文档中的介绍。
    http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码

    10.3.1. 服务器字符集和校对
    MySQL服务器有一个服务器字符集和一个服务器校对规则,它们均不能设置为空。
    MySQL按照如下方法确定服务器字符集和服务器校对规则:·         当服务器启动时根据有效的选项设置·         根据运行时的设定值在服务器级别,确定方法很简单。当启动mysqld时,根据使用的初始选项设置来确定服务器字符集和 校对规则。可以使用--default-character-set设置字符集,并且可以在字符集后面为 校对规则添加--default-collation。如果没有指定一个字符集,那就与--default-character-set=latin1相同。如果你仅指定了一个字符集(例如,latin1),但是没有指定一个 校对规则,那就与--default-charset=latin1 --default-collation=latin1_swedish_ci相同,因为latin1_swedish_ci是latin1的默认校对规则。因此,以下三个命令有相同的效果:shell> mysqldshell> mysqld --default-character-set=latin1shell> mysqld --default-character-set=latin1 \           --default-collation=latin1_swedish_ci更改设定值的一个方法是通过重新编译。如果希望在从源程序构建时更改默认服务器字符集和校对规则,使用:--with-charset和--with-collation作为configure的参量。例如:shell> ./configure --with-charset=latin1
    或者:shell> ./configure --with-charset=latin1 \           --with-collation=latin1_german1_cimysqld和configure都验证字符集/校对规则组合是否有效。如果无效,每个程序都显示一个错误信息,然后终止。当前的服务器字符集和校对规则可以用作character_set_server和collation_server系统变量的值。在运行时能够改变这些变量的值。10.3.2. 数据库字符集和校对
    每一个数据库有一个数据库字符集和一个数据库校对规则,它不能够为空。CREATE DATABASE和ALTER DATABASE语句有一个可选的子句来指定数据库字符集和校对规则:
    CREATE DATABASE db_name
        [[DEFAULT] CHARACTER SET charset_name]
        [[DEFAULT] COLLATE collation_name]
     
    ALTER DATABASE db_name
        [[DEFAULT] CHARACTER SET charset_name]
        [[DEFAULT] COLLATE collation_name]
    例如:CREATE DATABASE db_name
        DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
    MySQL这样选择数据库字符集和数据库校对规则:·         如果指定了CHARACTER SET X和COLLATE Y,那么采用字符集X和校对规则Y。·         如果指定了CHARACTER SET X而没有指定COLLATE Y,那么采用CHARACTER SET X和CHARACTER SET X的默认校对规则。·         否则,采用服务器字符集和服务器校对规则。MySQL的CREATE DATABASE ... DEFAULT CHARACTER SET ...语法与标准SQL的CREATE SCHEMA ... CHARACTER SET ...语法类似。因此,可以在同一个MySQL服务器上创建使用不同字符集和 校对规则的数据库。如果在CREATE TABLE语句中没有指定表字符集和校对规则,则使用数据库字符集和校对规则作为默认值。它们没有其它目的。默认数据库的字符集和校对规则可以用作character_set_database和 collation_database系统变量。无论何时默认数据库更改了,服务器都设置这两个变量的值。如果没有 默认数据库,这两个变量与相应的服务器级别的变量(character_set_server和collation_server)具有相同的
      

  2.   

      // latin字符集不能输入中文么?可以输入,但未必能正确解析。 计算机中最终存储的全是0,1。中文同样也是 0,1 所以理论上可以,但操作起来自己要注意.
      

  3.   

    server charset可以修改么?
    可以,手册中已经介绍了。
      

  4.   


    latin输入中文后,数据库客户端显示乱码,这个时候修改表的编码类型,在客户端是否就能正常显示了呢?
      

  5.   

    latin输入中文后,数据库客户端显示乱码,这个时候修改表的编码类型,在客户端是否就能正常显示了呢?
    建议详细阅读一下MYSQL官方免费文档中的介绍。
    http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
    看完再说吧,否则一千个字估计讲不清楚。