1.我们可以在4个level指定字符集,server, database, table, and column。2.mysql在字符集方面的功能
2.1 以各种字符集存储字符串。
2.2 用不同的collation比较字符。
2.3在4个level指定字符集,server, database, table, and column
2.4查看server的当前字符集,character_set_server and
collation_server system
variables. 并且在服务器运行时可以改变这些变量。
2.5 database
2.5.1 创建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]2.5.2 创建database时,如果没有特别指定,使用server的character set and server collationcharacter set和collation作用于 LOAD DATA
INFILE。
2.6 table
CREATE TABLE tbl_name (column_list)
[[DEFAULT] CHARACTER SET charset_name]
[COLLATE collation_name]]
ALTER TABLE tbl_name
[[DEFAULT] CHARACTER SET charset_name]
[COLLATE collation_name]表一级的字符集设定是mysql的特性 ,标准sql里是没有的。
2.7 column
每一个字符的column( e CHAR,
VARCHAR, or
TEXT) has a column character
set and a column collation.
2.8 如何查看相应级别的字符集,可以查看mysql的常用命令。
2.9 每个字符串字面都有字符集和collation两个属性。
Every character string literal has a character set and a
collation。2.10 连接的字符集和collation.
3.创建表的一些经验:
3.1首先创建表之前应当确认一下当前的字符集环境。
show variables like 'char%'
3.2 测试结果
测试用mysql版本mysql5.0.37
1 在 mysql> 提示符下执行create table命令
1.1 create table *****kill摒弃这种不确定性操作
1.2 set names gbk; create table !ok
1.3 set names utf8 ; create table !ok
2 利用文件导入到数据库
2.1 文件gbk 文件内容 set names gbk; create table 利用set names utf8查看正常
2.2 文件gbk 文件内容 set names utf8; create table 不管怎么看都是乱码了,呵呵.
2.3 文件utf8 文件内容 set names utf8; create table 利用set names utf8查看正常
2.4 文件utf8 文件内容 set names gbk; create table 利用set names gbk查看正常.
2.5 文件utf8 文件内容 create table *****kill摒弃这种不确定性操作
2.6 文件gbk 文件内容 create table *****kill摒弃这种不确定性操作
3 通过load data 导入xls文件到数据库中,再利用mysqldump导出相应表的sql文件file.sql
3.1 file.sql为gbk test数据库
set names gbk查看: data为乱码 comment 乱
set names utf8查看: data为正常 comment 乱
3.2 file.sql为utf8 test2
set names utf8查看: data正常 coment乱
3.3 file.sql为gbk
3.3.1 create table:set names utf8; insert table : set names gbk test3
如果这个表导入数据库后,dump导出是乱码那么终究还是有些问题的,可以考虑重新load和dump,能够解决问题。
测试用mysql版本mysql5.0.37
1 在 mysql> 提示符下执行create table命令
1.1 create table *****kill摒弃这种不确定性操作
1.2 set names gbk; create table !ok
1.3 set names utf8 ; create table !ok
2 利用文件导入到数据库
2.1 文件gbk 文件内容 set names gbk; create table 利用set names utf8查看正常
2.2 文件gbk 文件内容 set names utf8; create table 不管怎么看都是乱码了,呵呵.
2.3 文件utf8 文件内容 set names utf8; create table 利用set names utf8查看正常
2.4 文件utf8 文件内容 set names gbk; create table 利用set names gbk查看正常.
2.5 文件utf8 文件内容 create table *****kill摒弃这种不确定性操作
2.6 文件gbk 文件内容 create table *****kill摒弃这种不确定性操作
3 通过load data 导入xls文件到数据库中,再利用mysqldump导出相应表的sql文件file.sql
3.1 file.sql为gbk test数据库
set names gbk查看: data为乱码 comment 乱
set names utf8查看: data为正常 comment 乱
3.2 file.sql为utf8 test2
set names utf8查看: data正常 coment乱
3.3 file.sql为gbk
3.3.1 create table:set names utf8; insert table : set names gbk test3
如果这个表导入数据库后,dump导出是乱码那么终究还是有些问题的,可以考虑重新load和dump,能够解决问题。
--测试用mysql版本mysql5.0.37
--1 在 mysql> 提示符下执行create table命令
--1.1 create table *****kill摒弃这种不确定性操作
--1.2 set names gbk; create table !ok当然最好是utf8的
--1.3 set names utf8 ; create table !ok
--2 利用文件导入到数据库
--2.1 文件gbk 文件内容 set names gbk; create table 利用set names utf8查看正常
--2.2 文件gbk 文件内容 set names utf8; create table 不管怎么看都是乱码了,呵呵.
--2.3 文件utf8 文件内容 set names utf8; create table 利用set names utf8查看正常
--2.4 文件utf8 文件内容 set names gbk; create table 利用set names gbk查看正常.
--2.5 文件utf8 文件内容 create table *****kill摒弃这种不确定性操作
--2.6 文件gbk 文件内容 create table *****kill摒弃这种不确定性操作
--3 通过load data 导入xls文件到数据库中,再利用mysqldump导出相应表的sql文件file.sql
--3.1 file.sql为gbk test数据库
--set names gbk查看: data为乱码 comment 乱
--set names utf8查看: data为正常 comment 乱
--3.2 file.sql为utf8 test2
--set names utf8查看: data正常 coment乱
--3.3 file.sql为gbk
--3.3.1 create table:set names utf8; insert table : set names gbk test3
--总结:表的数据格式最好是utf8的,例如:我们如果我们用mysqldump出来的数据是gbk格式的,我们可以用iconv或enca转换为utf8文件,删除文件中的多余-- 和/**/这些,再在文件中加入set names utf8即可,这样我们的表的字符集create table和insert 的字符集是一致的,不会出现二者有一个为乱码的尴尬局面。