mysql写入数据和查询数据时编码转化的流程
一.个人总结
写入数据:
客户端(控制台)------------>链接器(connection)------------>表(table 也可以写字段编码,一般字段编码默认与表编码一致)
说明:1.客户端也就是输出SQL语句的地方,通常为控制台,character_set_client变量要与控制台编码一致,比如,控制台编码为简体中文(活动代码页 936),则character_set_client=gb2312;
2.连接器编码,也就是character_set_connection,通常与客户端编码character_set_client保持一致(后面查询时用到的character_set_results也与character_set_client一致)
3.mysql中表的编码一般固定设置为UTF-8就可以,mysql中如果不指定编码格式,会默认集成上级编码,比如:表中字段编码默认继承表的编码,表的编码默认继承数据库(database)编码,数据库的编码 默认继承服务器(server)的编码,服务器编码一般可以在mysql初始化时设置为UTF-8,后面如果不指定特定编码,则 数据库(database),表(table),字段(column)都默认继承上一级编码。
查询数据:
表(table)------------>结果集(results)-------------->控制台(显示结果集)
说明:1.表的编码上面讲过(上面第3点),这里就不再赘述。
2.结果集编码(character_set_results)与客户端编码一致(character_set_client),也即是说控制台编码为中文简体,则character_set_client=gb2312,character_set_results=gb2312,同时连接器编码 character_set_connection=gb2312;
3.mysql中cahracter_set_server,character_set_database,character_set_system一般都设置为UTF-8即可;
character_set_client,character_set_results,character_set_connection的编码设置与控制台编码(详情百度活动代码页)一致。
参考资料:
https://blog.csdn.net/kxcfzyk/article/details/35283041
https://www.cnblogs.com/wj-1314/p/9147166.html
https://www.cnblogs.com/muxiaoye/p/368f31706428ac42b43a1ec74df3d3a5.html

浙公网安备 33010602011771号