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,修改瀏覽器編碼
編輯 -》首選項 -》內容 -》字型和顏色的“高階”按鈕 -》預設字元編碼改為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語句插入中文,後在瀏覽器看看是否能正常顯示。