① python怎麼知道一個字元串的編碼方式
字元串的編碼,有很多種如utf-8,gb2312,gbk,gb18030,bz2,zlib,big5,bzse64
python 對編碼的處理有兩個方法,decode()和 encode()方法
a='你好'
b='python'
printa.decode('utf-8').encode('gbk')##decode方法把字元串轉換為unicode對象,然後通過encode方法轉換為指定的編碼字元串對象
printb.decode('utf-8')##decode方法把字元串轉換為unicode對象
所以要讓python(或者說機器)來識別字元串的編碼,是一件很困難的事。編碼就是漢字和整數之間的對應,同一個整數,可以在不同的編碼中,都有對應的漢字。比如下面的例子,比特流'xe6xb0xb4xe5xa3xb6'在四種編碼中都有對應的漢字,但只有在utf-8編碼下,它對應的漢字才有意義。我們可以一眼看出這點,可是要讓計算機做到這點,就很難了。
>>>s='水壺'
>>>s
18:'xe6xb0xb4xe5xa3xb6'
>>>printunicode(s,'big5')
瘞游ㄥ
>>>printunicode(s,'gbk')
姘村6
>>>printunicode(s,'gb2312')
姘村6
>>>printunicode(s,'utf-8')
水壺
② python導入csv文件 顯示編碼錯誤,gb18030就可以導入, gb2312導不入,為什麼呢
說明這個csv文件應該是使用gb18030編碼的。兩種區別詳見:網頁鏈接
編碼方式不通,解碼方式也不同。
通常我們在Windows下,不同的Excel可能使用不同的本地語言編碼。而在非Windows系統下,通常使用UTF-8編碼,這樣會通用些。
可以使用notepad++來處理下源文件,可以看到編碼方式。另存為UTF-8就行了。這種方式比較通用。
③ Python print無法輸出中文字元
這里提示語法錯誤。因為你沒有指定文件的編碼,默認情況下不能用中文。
如果代碼中有中文、中文的注釋,需要在文件最上面加上這一句:
#encoding:utf-8
print'哈哈哈哈哈'
這樣就OK了,望採納!
④ python異常亂碼如何解決
如果頁面是GB18030編碼,而資料庫是GBK編碼,一般來說是不用轉換的。GB18030是GBK的超級。GB18030本身兼容GBK,而GB18030中的部分字元GBK中是沒有的。將GB18030字元寫入GBK的資料庫,只會丟失部分字元而已。一般網頁上不會出現罕見的字元,所以這種情況是無需處理的。
所以,請仔細核對頁面和資料庫的編碼。
即使你提供的頁面、資料庫編碼是正確的,而且一定要轉換,也應該這樣做:
s='GB18030字元串'
s=s.decode('GB18030')#轉化為unicode
s=s.encode('GBK')#轉化為GBK
⑤ python文件編碼問題
還真有些弄不明白。不過我就明白的給你說。
不要用記事本,另存改變編碼,除非你目標編碼是ANSI
只要是文字都是字元編碼,不可能是內存中的編碼格式。WINDOWS使用MBCK(類似這個名子)的內部編碼。就是多位元組編碼的方式存在內存里。但是存在文件里一定是字元串,一定是正式的國際編碼。
ANSI是操作系統內的標准編碼。對於通常來說就是GB18030
unicode有很多編碼方式。包括utf-8,utf-16, big-5, gbk, gb18030等。所以這里微軟說的unicode估計是給微軟程序做序列化用的格式
unicode big endian同上。這個編碼應該是一個長位元組編碼用的。
順便說一下,微軟記事本的UTF-8編碼文件有問題,前面有1-2個位元組的識別用字元。如果你用python或者是其它操作系統讀取文件,可能會出問題。
⑥ Python 如何把一個GB18030文件轉換成Utf8格式
content = open("gb18030.txt").read().decode("gb18030")
open("utf8.txt","w").write(content.encode("utf8"))
⑦ Python中怎麼定義中文編碼
在程序的第一行指定中文編碼方式,並且輸入字元為unicode,然後編碼成gb18030方式,完整程序如下:
-------------------------------------
# -*- coding: gb18030 -*-
#!/usr/bin/python
cont = raw_input( u"請輸入:".encode("gb18030") )
print cont
-------------------------------------
輸入的內容也可以是中文
⑧ 如何判斷中文亂碼 python
如果頁面是GB18030編碼,而資料庫是GBK編碼,一般來說是不用轉換的。GB18030是GBK的超級。GB18030本身兼容GBK,而GB18030中的部分字元GBK中是沒有的。將GB18030字元寫入GBK的資料庫,只會丟失部分字元而已。一般網頁上不會出現罕見的字元,所以這種情況是無需處理的。
所以,請仔細核對頁面和資料庫的編碼。
即使你提供的頁面、資料庫編碼是正確的,而且一定要轉換,也應該這樣做:
s = 'GB18030字元串'
s = s.decode('GB18030') # 轉化為unicode
s = s.encode('GBK') # 轉化為GBK
⑨ 如何解決python UnicodeDecodeError問題
python的中文編碼比較容易采坑,主要有一下幾個注意點:
明確讀取的是什麼編碼格式的輸入 gb18030,還是utf-8,,如果不是從文件中來,而是代碼內的中文字元,最好直接 u'中文',將編碼變為 unicode
操作的時候,注意各種字元串的編碼方式匹配,可以都轉為unicode以統一處理,string.decode('gb18030') 可以把 gb18030編碼轉換為 unicode編碼
輸出時,明確最終的輸出格式是什麼,從而採用正確的 encode 方式進行編碼
至於json,在load的時候,注意設定編碼方式, json.loads(str, encoding='gb18030') 或者 utf-8
如果按照這個原則解決不了,可以考慮貼代碼
⑩ python終端輸出亂碼怎麼解決
在命令行終端上工作時,經常會碰到一個頭疼的問題就是中文亂碼。下面我們就來看一下解決python在終端輸出亂碼的解決方法。
牽涉編碼的地方一共有五處:
Python代碼文件前兩行聲明的編碼
Python代碼文件實際存儲所使用的編碼
Vim的顯示編碼
Linux系統的文件編碼
SecureCRT等終端設置的顯示編碼
嚴格來講,五碼一致的時候,如果文件沒有損壞,應該是能夠正常顯示了。
Python編碼聲明:
如果python代碼文件中包含中文,就一定要在代碼文件的前兩行(注意:一定要是前兩行)做出編碼聲明,否則python代碼默認採用ASCII保存,這樣遇到中文字元就會報錯。在代碼頭部聲明編碼的方式有三種:
# coding=<encoding name>
# -*- coding: <encoding name> -*-
# vim: set fileencoding=<encoding name>
Vim中有關編碼的選項:
在 Vim 中,有四個與編碼有關的選項,它們是:fileencodings、fileencoding、encoding 和 termencoding。
Linux系統的編碼設置:
Linux的系統編碼設置可以通過設置locale來完成,直接在命令行敲locale,然後回車,即可查看當前系統的編碼設置,與保存文件相關的設置是LC_CTYPE。
如LC_CTYPE=zh_CN.gb18030,即把系統的編碼設置成為了gb18030。
更多Python知識請關注Python自學網