A. python中文亂碼是怎麼一回事
python報錯invalid character in identifier,意思就是「標識符中的無效字元」,檢查下有沒有字元是中文的,把中文字元改成英文字元再運行就可以了。
Python的作者有意的設計限制性很強的語法,使得不好的編程習慣(例如if語句的下一行不向右縮進)都不能通過編譯。其中很重要的一項就是Python的縮進規則。
一個和其他大多數語言(如C)的區別就是,一個模塊的界限,完全是由每行的首字元在這一行的位置來決定的(而C語言是用一對花括弧{}來明確的定出模塊的邊界的,與字元的位置毫無關系)。這一點曾經引起過爭議。
因為自從C這類的語言誕生後,語言的語法含義與字元的排列方式分離開來,曾經被認為是一種程序語言的進步。不過不可否認的是,通過強制程序員們縮進(包括if,for和函數定義等所有需要使用模塊的地方),Python確實使得程序更加清晰和美觀。
(1)python資料庫中文亂碼擴展閱讀
Python 中文編碼:
Python中默認的編碼格式是 ASCII 格式,在沒修改編碼格式時無法正確列印漢字,所以在讀取中文時會報錯。
解決方法為只要在文件開頭加入# -*- coding: UTF-8 -*-或者# coding=utf-8就行了
注意:# coding=utf-8的=號兩邊不要空格。
實例:
(Python 2.0+)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
print( "你好,世界" )
輸出結果為:
你好,世界
B. python 部分中文顯示亂碼
wb讀取pdf?二進制讀取????
換成w+
提示的錯誤時名稱錯誤,或者打開模式wb錯誤。
看一下名稱是否出錯,例如多了空格等
看一下計算機pdf和其他文件內部的區別,例如是否有圖片等等,導致
C. python中文亂碼解決
windows下的文件路徑,cmd窗口等默認編碼都是gbk
但在windows下編寫python程序的時候,我們一般採用的編碼是utf-8
二者不一致是導致亂碼的根本原因!
在pycharm下,為了中文不亂碼,那麼需要注意一下幾個方面:
一、每一個源程序文件頭部,需要加上
#-*-coding:utf-8;-*-
這樣就沒有亂碼了
D. Python中中文亂碼問題
a ='哈哈'
b = a.encode('utf-8')
以上你的代碼是UTF8編碼吧,a本來就是UTF8編碼,你在給它編碼幹嘛,encode是編碼,decode是解碼,你不報錯沒天理。
a = u'哈哈'
b = a.encode('utf-8')
a是U編碼類型也就是你上一個沒加U的哈哈的解碼,它肯定不會保存!
E. python中文顯示亂碼,已經在開頭有了coding: utf-8
亂碼原因:
因為你的文件聲明為 utf-8,並且也應該是用 utf-8 的編碼保存的源文件。但是 windows 的本地默認編碼是 cp936,也就是 gbk 編碼,所以在控制台直接列印 utf-8 的字元串當然是亂碼了。
解決方法:
py文件用記事本打開,另存為utf-8格式即可
F. python3連接MSSQL資料庫 中文亂碼怎麼解決
以前用php連mssqy時也經常出現中文亂碼(中文變問號)的問題,那時就明白是編碼沒設置好導航,現在的Python連mssql資料庫也同樣出現這問題,問題一樣,解決的辦法當然也會相似,現在我們來看看解決方法。
python一直對中文支持的不好,最近老遇到編碼問題,而且幾乎沒有通用的方案來解決這個問題,但是對常見的方法都試過之後,發現還是可以解決的,下面總結了常用的支持中文的編碼問題(這些方法中可能其中一個就能解決問題,也可能是多個組合)。
(1)、首先,要保證文件的開頭要加上編碼設置來說明文件的編碼
代碼如下
復制代碼
#encoding=utf-8
(2)、然後,在連接數據的連接參數里加上字元集說明查詢出的結果的編碼,這個不加的後果可能是查詢出的漢字字元都是問號
代碼如下
復制代碼
conn=pymssql.connect(server='.',user='', password='',database='MyTest',charset='utf8')
(3)、設置python系統的默認編碼(對於文件來說,這招幾乎屢試不爽,呵呵~~)
代碼如下
復制代碼
import sys
reload(sys)
sys.setdefaultencoding('utf8')
注意:上述編碼是「utf8」,而不是「utf-8」,我也沒弄明白,大部分情況下,這個無所謂的,但是這里我試了必須要是「utf8」
一個簡單的完整的python連接mssqlserver的例子如下(得安裝pymssql包):
代碼如下
復制代碼
#encoding:utf8
import sys
reload(sys)
sys.setdefaultencoding('utf8')
import pymssql
try:
conn=pymssql.connect(server='.',user='', password='',database='MyTest',charset='utf8')
sql="select * from UserInfo"
cur=conn.cursor()
cur.execute(sql)
data=cur.fetchall()
conn.close()
print data
except Exception,e:
print e
運行結果如下:
代碼如下
復制代碼
[(u'20093501', u'xb9xf9xbexb8', u'u7537 ', 35, u'xb4xf3xcfxc0'),
(u'20093502', u'xbbxc6xc8xd8', u'u5973 ', 34, u'xc3xc0xc5xae'),
(u'20093503', u'xc1xeexbaxfcxb3xe5', u'u7537 ', 25, u'2Bxc7xe0xc4xea'),
(u'20093504', u'xc8xcexd3xafxd3xaf', u'u5973 ', 24, u'xc6xafxc1xc1')]
[Finished in 0.2s]
雖然擺脫了問號和亂碼的困擾,但這仍不是我們想要的結果,但這個確實是正確的,因為結果是utf8編碼。這個現象確實詭異,請教了許多高手,得知,最好的結果就是逐個欄位查詢,才能顯示中文,整個查詢的話,會以utf8的格式顯示出來。
上述代碼中第14行data是整個查詢的結果,如果指定某個具體的欄位,如print data[0][2](表示取查詢結果的第一行第三列的欄位的值),則會輸出中文。
其實不僅僅是mssqlserver資料庫,mysql(需下載MySQLdb包)、sqllite(python自帶的文件資料庫)、mongodb(需下載PyMongo包)等或者是普通文本文件也是類似的解決方案。
G. python3連接MSSQL資料庫 中文亂碼怎麼解決
在獲取數據之前,執行mysql的命令set names utf8;
同時在python的文件頭,加上
# -*- coding: utf-8 -*-
將這個文件也編碼為utf8
如果還是亂碼,就更改mysql的編碼.