恰当的字符集,畅快的体验!
00、Oracle字符集
Subsets and Supersets #子集与超集
Table A-11 Subset-Superset Pairs
Subset(子集)
Superset(超集)
AR8ADOS710
AR8ADOS710T
AR8ADOS720
AR8ADOS720T
AR8ADOS720T
AR8ADOS720
AR8APTEC715
AR8APTEC715T
AR8ARABICMACT
AR8ARABICMAC
AR8ISO8859P6
AR8ASMO708PLUS
AR8ISO8859P6
AR8ASMO8X
AR8MUSSAD768
AR8MUSSAD768T
AR8MUSSAD768T
AR8MUSSAD768
AR8NAFITHA711
AR8NAFITHA711T
AR8NAFITHA721
AR8NAFITHA721T
AR8SAKHR707
AR8SAKHR707T
AR8SAKHR707T
AR8SAKHR707
BLT8CP921
BLT8ISO8859P13
BLT8CP921
LT8MSWIN921
D7DEC
D7SIEMENS9780X
D7SIEMENS9780X
D7DEC
DK7SIEMENS9780X
N7SIEMENS9780X
I7DEC
I7SIEMENS9780X
I7SIEMENS9780X
IW8EBCDIC424
IW8EBCDIC424
IW8EBCDIC1086
KO16KSC5601
KO16MSWIN949
LT8MSWIN921
BLT8ISO8859P13
LT8MSWIN921
BLT8CP921
N7SIEMENS9780X
DK7SIEMENS9780X
UTF8
AL32UTF8
WE8DEC
TR8DEC
WE8DEC
WE8NCR4970
WE8ISO8859P1
WE8MSWIN1252
WE8ISO8859P9
TR8MSWIN1254
WE8NCR4970
TR8DEC
WE8NCR4970
WE8DEC
WE8PC850
WE8PC858
注意:
直接修改oracle字符集,子集向超集转变。是没问题的。汉字在gbk下占2个字节、utf8下是3个字节
01、mysql字符集关系
11、查看mysq支持的字符集
show character set;
22、查看当前数据库使用的字符集
show variables like '%character%';
参数解释:
mysql和字符集有关的变量
character_set_client: 客户端请求数据的字符集
character_set_connection:从客户端接收到数据,然后传输的字符集
character_set_database: 默认数据库的字符集,无论默认数据库如何改变,都是这个字符集;如果没有默认数据库,那就使用 character_set_server指定的字符集,这个变量建议由系统自己管理,不要人为定义。
character_set_filesystem: 把os上文件名转化成此字符集,即把 character_set_client转换character_set_filesystem,默认binary是不做任何转换的
character_set_results: 结果集的字符集
character_set_server:数据库服务器的默认字符集
character_set_system: 这个值总是utf8,不需要设置,是为存储系统元数据的字符集
修改mysql字符集的方法:
mysql> SET collation_connection = utf8_general_ci ;
mysql> SET collation_database = utf8_general_ci;
mysql> SET collation_server = utf8_general_ci ;
02、mysql客户端请求字符集流转过程
一个完整的用户请求的字符集转换流程是
1) mysql Server收到请求时将请求数据从character_set_client转换为character_set_connection
2) 进行内部操作前将请求数据从character_set_connection转换为内部操作字符集,步骤如下
A. 使用每个数据字段的CHARACTER SET设定值;
B. 若上述值不存在,则使用对应数据表的字符集设定值
C. 若上述值不存在,则使用对应数据库的字符集设定值;
D. 若上述值不存在,则使用character_set_server设定值。
3) 最后将操作结果从内部操作字符集转换为character_set_results
附上mysql5.6.x的my.cnf配置
[client]default-character-set=utf8
[mysql]
auto-rehashdefault-character-set=utf8
[mysqld]
user=mysql
innodb_buffer_pool_size=256M
join_buffer_size=128M
sort_buffer_size=20M
read_rnd_buffer_size=64M
lower_case_table_names=1max_allowed_packet=500M
wait_timeout=200000interactive_timeout=200000datadir=/servyou_domain/mysql/data
socket=/var/lib/mysql/mysql.sock
init_connect='SET collation_connection = utf8_unicode_ci'init_connect='SET NAMES utf8'character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
symbolic-links=0sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
log_bin_trust_function_creators=1[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/servyou_domain/mysql/data/mysqld.pid