1. 程式人生 > >python頁面亂碼問題及解決(pycharm+mysql)

python頁面亂碼問題及解決(pycharm+mysql)

Ubuntu下:

there is no doubt that 這是編碼問題引起的,應該確保mysql,pycharm和瀏覽器的編碼三碼合一。

1,在每個python頁開頭加上一行“# -*- coding: utf-8 -*-”

     類似這樣:#!/usr/bin/python

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

2,修改pycharm的編碼:

setting -> File Encoding -> 所有 編碼方式都改成UTF-8(網上一些教程說IDE Encoding要改成GBK,是因為在windows下預設編碼是GBK,而ubuntu下是utf8)

3,修改mysql的編碼:

     檢視你的mysql編碼:登入後,輸入命令show variables like '%char%' 如:mysql>show variables like '%char%' 然後就會顯示mysql的預設編碼:

     可以手動用命令set @@character_set_client=utf8來修改,但是似乎不是永久的,建議直接修改配置檔案/etc/mysql/my.cnf檔案

     找到[client]和[mysql]在它們下面加入這句default-character-set=utf8,

    找到[mysqld],在它下面加這段

init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake

儲存退出。

重啟mysql。在shell命令列下輸入sudo service mysql restart

重啟後登入mysql檢視編碼(命令show variables like '%char%'),會發現都變成了utf-8,除了filesystem(我的character_set_database還是GBK,不過似乎沒什麼影響)

網上找到的修改mysql配置檔案的教程都是說在[mysqld]下加入default-character-set=utf8和init_connect='SET NAMES utf8'這兩句,但是實踐證明加入後無法重啟mysql。讀者不妨可以試試。

4,修改瀏覽器編碼

。ubuntu下一般是用火狐瀏覽器,修改方法如下:

    編輯 -》首選項 -》內容 -》字型和顏色的“高階”按鈕 -》預設字元編碼改為UTF8

補充一點:python連線資料庫時要加上一句charset='utr8'
例如:

conn = MySQLdb.connect(host='localhost',user='root',passwd='123456',db=‘studentdb',charset='utf8')

這樣能解決Python插入Mysql後程式設計亂碼的問題。

如果以上都保證無誤,還是出現亂碼問題,可以嘗試檢查:

1,火狐瀏覽器頁面上,右鍵檢視頁面資訊 -》常規 -》看看編碼是不是utf8,如果不是的話:在火狐瀏覽器左上角 :檢視-》字元編碼 -》utf8

2,如果頁面字元編碼是utf8,應確保mysql裡存的資料不是亂碼 : 登入進mysql,檢視你的表裡的資料是否是亂碼,mysql -> select * from yourTableName,如果是亂碼,用insert into語句插入中文,後在瀏覽器看看是否能正常顯示。