mysql字符集

mysql字符集
中文
utf8
latin1
乱码
character set

[MySQL FAQ]系列-字符集兼容性测试

之前做过的兼容性测试结果:

infobright下如何使用utf8字符集

目前infobright应用越来越多了,有些场景下需要和台管理系统共用,因此需要同时存在brighthouse和myisam两种引擎。
这时候,如果需要brighthouse引擎支持utf8字符集,需要:
1. 数据库对象创建时务必使用utf8字符集,这点尤为关键,否则不可支持utf8;
2. 数据表对象创建时也使用utf8字符集;
3. 导入文件提前转换成utf8字符集;
4. 连接infobright时,执行set names utf8;
5. 导入文件,查看字符集是否正确;

另一种场景下,可能myisam表也需要支持utf8,这个相对比较麻烦:
1. 数据库对象创建时无所谓,不强制必须是utf8;
2. 数据表对象创建时务必使用utf8字符集;
3. 将导入文件全部转换成utf8字符集的INSERT语法,直接写入数据,infobright不支持LOAD DATA INFILE方式导入utf8字符集的文件;
4. 也可以将其他非字符型字段导入后,再用update进行更新;

[MySQL FAQ]系列 -- 如何设定连接服务器时的字符集

1、) 登录服务器后,执行 SET NAMES ‘utf8’; 这样的SQL语句来设定连接字符集为 utf8
2、) 用GUI客户端(如Navicat/MySQL Front)连接服务器时,设定字符集
3、) 用 PhpMyAdmin 连接时,在登录页面选择正确的字符集

[MySQL FAQ]系列 -- 如何为一个字段指定字符集

尽管数据表创建时已经指定默认字符集了,但是该表里面的字段还是可以指定自己的字符集的。

1、创建数据表时,指定其字符集

CREATE TABLE tbl
(
......
name CHAR(20) CHARACTER SET UTF8,
......
) ENGINE = MyISAM DEFAULT CHARSET UTF8;

2、或者采用 ALTER 语法来转换字段的字符集

ALTER TABLE tbl CHANGE name name CHAR(20) CHARACTER SET utf8;

3、采用其他客户端工具来设定,例如 Navicat/MySQL Front/PhpMyAdmin

[MySQL FAQ]系列 -- 如何为一个数据表指定字符集

指定数据表字符集后,该数据表里的所有字符型字段默认都使用该表指定的字符集。

1、创建数据表时,指定其字符集

CREATE TABLE tbl
(
......
) ENGINE = MyISAM DEFAULT CHARSET UTF8;

2、或者采用 ALTER 语法来转换字段的字符集

ALTER TABLE tbl CONVERT TO CHARACTER SET utf8;

3、采用其他客户端工具来设定,例如 Navicat/MySQL Front/PhpMyAdmin

[MySQL FAQ]系列 -- 如何为一个数据库指定字符集

指定数据库字符集后,该数据库下创建的表默认都采用该库指定的字符集。

1、创建数据库时,指定其字符集

CREATE DATABASE db DEFAULT CHARSET UTF8;

2、或者采用 ALTER 语法来转换字段的字符集

ALTER DATABASE db DEFAULT CHARSET UTF8;

[MySQL FAQ]系列 -- 如何更改MySQL的默认字符集

方法1、 用 SET 语法来指定,不加 "GLOBAL" 的话就只对本次会话有效

SET [GLOBAL] character_set_client     = utf8;
SET [GLOBAL] character_set_connection = utf8;
SET [GLOBAL] character_set_database   = utf8;
SET [GLOBAL] character_set_results    = utf8;
SET [GLOBAL] character_set_server     = utf8;

方法2、 也用SET语法,只对本次会话有效

SET NAMES 'utf8';

方法3、) 直接修改 my.cnf,增加一行内容,然后重启 MySQL,使之全局生效

default-character-set = utf8

推出第一个免费工具CCT

太多次接到网友关于字符集问题的帮助需求了,最后主要集中在文件字符集的转换上,有些网友对转换过程不太熟悉,因此本站提供该工具:
转换文件内容字符集工具 Charset Convert Tool(CCT) ,主要是配合 小谈MySQL字符集 一起试用,欢迎报告bug。

个人涂鸦:

技术相关:

转换文件内容字符集工具(CCT)

转换文件内容字符集工具

技术相关:

MySQL 存储过程的字符集问题

由于存储过程中定义参数时,无法定义其字符集,因此调用存储过程的时候,会默认读取全局变量character_set_server,而且还是只读取mysqld启动时该全局变量的值作为存储过程中默认的传输字符集。因此,如果数据表/字段使用系统默认的字符集(比如latin1)的话,调用存储过程更新一些非英文的字符串字段时,就不会发生问题;但是,如果数据表/字段的字符集不是系统默认的字符集(比如默认是latin1,数据表使用的是utf8),就会出现问题了。解决办法是:在my.cnf(windows下是my.ini),增加一行:

default-character-set=utf8

或者

页面

Subscribe to RSS - mysql字符集