zoukankan      html  css  js  c++  java
  • Mysql处理中文乱码的问题

    一开始在创建完毕数据库和数据表之后,插入中文发现在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 '这个字段,允许为空'; 

  • 相关阅读:
    C语言中do...while(0)用法小结
    C语言函数指针的用法
    C语言预处理命令之条件编译
    欧拉计划11-15题
    欧拉计划6-10题
    已加载“C:WindowsSysWOW64 tdll.dll”。无法查找或打开 PDB 文件。
    C++使用SQLite步骤及示例
    linux 安装sysstat使用iostat、mpstat、sar、sa
    Nmon命令行:Linux系统性能的监测利器
    linux服务器性能检测工具nmon使用
  • 原文地址:https://www.cnblogs.com/yzhch/p/6432663.html
Copyright © 2011-2022 走看看