這個(gè)問(wèn)題說(shuō)大不大,說(shuō)是小問(wèn)題也很關(guān)鍵,有的時(shí)候真讓人頭疼
由于編程語(yǔ)言都是老外發(fā)明的,本身并不支持中文的輸入和顯示,所以我們就要聲明一種編碼來(lái)讓我們的程序支持中文,utf-8
是最常用的一種
這里是百度百科對(duì)于utf-8的概述:
UTF-8(8-bit Unicode Transformation Format)是一種針對(duì)Unicode的可變長(zhǎng)度字符編碼,又稱萬(wàn)國(guó)碼。由Ken Thompson于1992年創(chuàng)建。現(xiàn)在已經(jīng)標(biāo)準(zhǔn)化為RFC 3629。UTF-8用1到4個(gè)字節(jié)編碼UNICODE字符。用在網(wǎng)頁(yè)上可以同一頁(yè)面顯示中文簡(jiǎn)體繁體及其它語(yǔ)言(如英文,日文,韓文)。
通常我們寫python程序的時(shí)候都要在文件最上面聲明程序用utf-8
編碼,格式如下
# -*- coding: utf-8 -*-
還有兩種簡(jiǎn)略的形式
# coding:utf-8 或 # coding=utf-8
個(gè)人比較喜歡第一種,看起來(lái)更美觀
有的時(shí)候我們的程序需要解析文件中的內(nèi)容或者解析從網(wǎng)頁(yè)上獲取到的內(nèi)容,這時(shí)候就可能出現(xiàn)各種不可見(jiàn)的編碼,讓人頭痛。一種暴力的解決方式就是用reload(sys)
方法
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
但是,但是,但是,有的時(shí)候這種暴力的方法也不管用。這個(gè)時(shí)候我們就需要用chardet
檢測(cè)一下可能出現(xiàn)問(wèn)題的字符串,看看到底是哪里出的問(wèn)題。
import chardet
chardet.detect(str)
這樣就可以輸出這個(gè)字符串的編碼,到底是什么問(wèn)題就要對(duì)癥下藥了