一开始在创建完毕数据库和数据表之后,插入中文发现在mysql命令行和在sqlyog终端上看都是乱码,查看了一些文章,写的内容都一样,无非是如下几个步骤:

1:修改数据库字符集为utf8

2:修改数据表字符集为utf8

3:修改mysql数据库默认字符集为uft8

以上步骤请参考文章:http://www.cnblogs.com/fnng/p/3565912.html

4:在程序中连接数据库的时候,指定charset=utf8。

5:在程序中指定使用uft8字符集进行文本处理。

以上步骤以Python为例:

#!/bin/env python2.6
# -*- coding:utf-8 -*-
# 指定脚本使用utf8编码 import sys reload(sys)
sys.setdefaultencoding('utf-8') conn = MySQLdb.connect(host=mysqlInf['svr'],user=mysqlInf['user'],passwd=mysqlInf['pwd'],db=mysqlInf['db'],port=mysqlInf['port'],charset="utf8") # do something
conn.close()

  

但是按照以上步骤处理仍然发现插入的数据读取后还是乱码,中文文本在插入之前可以正常打印,插入之后无论通过select语句读取,还是通过终端查看,都是乱码。

后来经过同事指点,才发现mysql数据表中,每一个数据字段都有字符集,需要指定每个数据字段的字符集为utf8才可以。

SQLyog终端无法修改数据字段的字符集,登录mysql之后执行如下语句进行修改:

ALTER TABLE `库名`.`表明` CHANGE `字段名` `字段名` 类型(长度) CHARSET utf8 NULL COMMENT '字段说明备注';

例如:

ALTER TABLE `mydb`.`mytb` CHANGE `zhcn_name` `zhcn_name` CHAR(20) CHARSET utf8 NULL COMMENT '这个字段,允许为空';

最新文章

  1. Linux文件系统应用---系统数据备份和迁移(用户角度)
  2. oracle中的装换函数
  3. 线程高级应用-心得5-java5线程并发库中Lock和Condition实现线程同步通讯
  4. Java Concurrency - ScheduledThreadPoolExecutor
  5. JavaScript DOM高级程序设计 2.4-try{}catch{}--我要坚持到底!
  6. Codeforces 466 E. Information Graph
  7. XML编程与应用-读取XML
  8. UVA 11768 - Lattice Point or Not(数论)
  9. HTTP与私有二进制协议之间的区别
  10. 你不知道的JavaScript--Item27 异步编程异常解决方案
  11. Java 如何抛出异常、自定义异常
  12. sqlalchemy操作----建表 插入 查询 删除
  13. poj 3083 Children of th
  14. HDU1083(KB10-C 二分图最大匹配)
  15. FPGA将加速今日新型态数据中心的主流应用
  16. python单元测试pytest
  17. vue中实现国际化--语言切换(转载)
  18. iis添加共享目录为虚拟目录
  19. 20145229吴姗珊逆向BOF实践
  20. AngularJs(Part 11)--自定义Directive

热门文章

  1. echarts 中国地图标注所在点
  2. 简洁的描述SpringMVC工作流程
  3. web页面的时间传入servlet如何转换为可以存入MySQL的Date类型
  4. PWN菜鸡入门之函数调用栈与栈溢出的联系
  5. 多线程与高并发(三)synchronized关键字
  6. Linux下,非Docker启动Elasticsearch 6.3.0,安装ik分词器插件,以及使用Kibana测试Elasticsearch,
  7. js深入(三)作用域链与闭包
  8. TCP/IP协议栈---网络基础篇(3)
  9. 异常:Parameter 'username' not found. Available parameters are [arg1, arg0, param1, param2]
  10. JavaScript 常见的六种继承方式