zoukankan      html  css  js  c++  java
  • 数据库中文显示乱码问题解决办法

    Ubuntu 14.04    mysql 5.5  python 2.7

    从网页爬取数据存入数据库显示乱码

    1. 以root权限登录
    2. 修改mysql配置文件 /etc/init.d/my.cnf
          找到[client]在下面加入
         default-character-set=utf8
         找到 [mysqld_safe]在下面加入
         default-character-set=utf8
         找到[mysqld]在下面加入
         default-character-set=utf8
         init_connect='SET NAMES utf8'
        找到[mysql]在下面加入
        default-character-set=utf8
    3. 重启mysql service mysql stop/start/restart

    报错:1067错误

    重新修改配置文件,将找到[mysqld]下的default-character-set=utf8改为

    character-set-server=utf8,5.5版本必须这么写.

    1. 重启,重新打开一个控制台,输入mysql –u root –p,输入密码登录数据库.
    2. 输入 show variables like 'character%';查看配置如下:

     

    从数据库查询中文出现乱码

    可能情况:

    1. mysql数据库各项没有设置编码,默认为'latin'

    2.使用MySQL.connect的时候没有设置默认编码

    3.没有设置python的编码,python2.7默认为'ascii'

    4.没有解码

    ---

    解决方法:

    1.设置mysql的编码

    ubuntu执行下列语句:

    ** sudo vim /etc/mysql/my.cnf **

    然后在里面插入语句:

    [client]

    default-character-set=utf8

    [mysqld]

    character-set-server=utf8

    collation-server=utf8_general_ci

    退出 vim

    重新启动mysql:

    ** sudo service mysql restart **

    2.在code中设置MySQLdb的连接编码参数

    db=MySQLdb.connect(user='...',db='...',passwd='...',host='...',charset='utf8')

    3.在code中设置python默认编码

    # -*-coding:utf-8 -*-

    import sys

    reload(sys)

    sys.setdefaultencoding('utf-8')

    4.记得要解码

    t = cursor.fetchall()

    s = t[0][1].decode('utf-8')

  • 相关阅读:
    get和post
    java学习day34-Cookie技术
    java学习day33-Maven-相关
    在Linux设置完共享文件夹后无法显示Windows里的文件
    Tomcat-把tomcat的端口号从8080修改为80
    是否忘记向源中添加“#include“StdAfx.h””
    php-fpm配置文件详解
    Web安全常见漏洞修复建议
    blog个性化设置
    使用 notepad++ 编辑器在行首、行尾添加字符
  • 原文地址:https://www.cnblogs.com/forward-wang/p/5970856.html
Copyright © 2011-2022 走看看