數據庫中文顯示亂碼問題解決辦法

Ubuntu 14.04    mysql 5.5  python 2.7python

從網頁爬取數據存入數據庫顯示亂碼mysql

  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錯誤sql

從新修改配置文件,將找到[mysqld]下的default-character-set=utf8改成數據庫

character-set-server=utf8,5.5版本必須這麼寫.ubuntu

  1. 重啓,從新打開一個控制檯,輸入mysql –u root –p,輸入密碼登陸數據庫.
  2. 輸入 show variables like 'character%';查看配置以下:

 

從數據庫查詢中文出現亂碼vim

可能狀況:python2.7

1. mysql數據庫各項沒有設置編碼,默認爲'latin'fetch

2.使用MySQL.connect的時候沒有設置默認編碼編碼

3.沒有設置python的編碼,python2.7默認爲'ascii'rest

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')

相關文章
相關標籤/搜索