技术开发 频道

小议MySQL中的字符集处理

  三、字符集的修改

  我们可以对单个变量进行修改,如

  set character_set_client=gbk

  也可以使用set names 来同时修改几个变量, 如

  set names 'gbk' 可一下子全部修改字符集

  等价于:

  SET character_set_client = x;

  SET character_set_results = x;

  SET character_set_connection = x;

  值得注意的是:collation_connection变量缺省下与character_set_connection是相关联的,即

  collation_connection取决于character_set_connection的值。

  如:

  mysql> set names 'gbk';

  Query OK, 0 rows affected (0.08 sec)

  mysql> show variables like 'chara%';

  +--------------------------+-------------------------------------------+

  | Variable_name | Value |

  +--------------------------+-------------------------------------------+

  | character_set_client | gbk |

  | character_set_connection | gbk |

  | character_set_database | latin1 |

  | character_set_results | gbk |

  | character_set_server | latin1 |

  | character_set_system | utf8 |

  | character_sets_dir | d:\mysql-5.0.9-beta-win32\share\charsets/ |

  +--------------------------+-------------------------------------------+

  7 rows in set (0.00 sec)

  mysql> show variables like 'collation%';

  +----------------------+-------------------+

  | Variable_name | Value |

  +----------------------+-------------------+

  | collation_connection | gbk_chinese_ci |

  | collation_database | latin1_swedish_ci |

  | collation_server | latin1_swedish_ci |

  +----------------------+-------------------+

  3 rows in set (0.00 sec)

  我们可以看到 set names 'gbk'改变了character_set_client, character_set_connection, character_set_results, collation_connection的值.

  如果要单独指定collation_name,可以使用

  SET NAMES 'charset_name' COLLATE 'collation_name'

  另一种修改多个变量的命令是:

  SET CHARACTER SET x 等价于:

  SET character_set_client = x;

  SET character_set_results = x;

  SET collation_connection = @@collation_database;

  你可以自己体验一下该命令带来的字符集变量值的变动。

  那么character_set_server, character_set_database的值怎么修改呢?直接在命令行里修改是不起作用的。

  最好的方式是在配置文件my.ini中直接修改,在[mysqld]项下边添加:

  default_character_set=GBK

  当然,你如果想尝试,使用mysqld-nt --default_character_set=GBK来启动数据库也未尝不可,但我并不推荐这么做。

  my.ini文件的搜索顺序是:

  在版本4.1.5之前,必须在c:\my.cnf or c:\Windows\my.in下边,这个有待检验。

  在后续版本里,my.ini缺省就在mysql的安装目录下边。

  强调一点:

  mysql --default-character-set=gbk -u root

  或

  mysql --defaults-file=c:\my.ini -u root

  在my.ini中添加如下内容

  [mysql] or [client]

  default-character-set=gbk

  或

  mysql -u root

  再执行set names 'gbk'

  这三者效果完全一样。

0
相关文章