关于数据库中文乱码问题
在 mysql 中输入中文, 乱码, 尝试了修改数据库, 数据表的字符编码集, 都没有用, 最后发现问题如下:
修改数据库编码集
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
showvariableslike'%char%';
+--------------------------+----------------------------+
|Variable_name|Value|
+--------------------------+----------------------------+
|character_set_client|utf8|
|character_set_connection|utf8|
|character_set_database|latin1|
|character_set_filesystem|binary|
|character_set_results|utf8|
|character_set_server|latin1|
|character_set_system|utf8|
|character_sets_dir|/opt/lampp/share/charsets/|
+--------------------------+----------------------------+
此时可以 mysql 会显示当前数据库的编码集, 其实这里不改无妨, 如果要修改, 清参照下方代码:
1
2
3
4
setcharacter_set_server=utf8;
setcharacter_set_database=utf8;
showvariableslike'%char%';
修改数据表的编码集
1
2
3
4
5
6
7
8
9
10
11
12
13
MariaDB[(none)]>showcreatetablewall_notices.notices\G;
***************************1.row ***************************
Table:notices
CreateTable:CREATETABLE`notices`(
`nt_id`int(11)NOTNULLAUTO_INCREMENT,
`nt_title`char(20)DEFAULTNULL,
`nt_content`mediumtext,
`nt_create_time`datetimeDEFAULTNULL,
PRIMARYKEY(`nt_id`)
)ENGINE=InnoDBAUTO_INCREMENT=32DEFAULTCHARSET=utf8
, 这里是正确的, 如果不是这个值, 一般都需要修改, 修改代码:
输入第一行代码, mysql 就会显示 table 的创建代码, 此时可以发现DEFAULT CHARSET=utf8, 这里是正确的, 如果不是这个值, 一般都需要修改, 修改代码:
1
2
3
createtableuser(namevarchar(11))defaultcharset=utf8;
ALTERTABLE`table`DEFAULTCHARACTERSETutf8;
上述两行分别是创建之时指出编码集和创建之后修改编码集.
字段编码排序规则
一般前两点完成, 还是无法正常显示中文, 需要修改字段的排序规则
1
2
ALTERTABLE`tablename`CHANGE`字段名1``字段名2`VARCHAR(36)CHARACTERSETutf8NOTNULL;
到这里基本就没有什么问题了.
另注:
In newer versions of Confluence, database requirements become more and more stringent. This is to ensure that users get the most consistent experiences when working with content, regardless of the content in their database.
Collation in MySQL can be complicated because you can have a separate collation set at:
The database level
The table level
The column level
Post Views:
41