python2.7的編碼的常見解決方案.md

python2.7中,str和unicode是不同的類型,給非ASCII編碼的文字和符號的使用造成了極大的困難
str是字符序列
unicode是字節(jié)序列

遇到類似于 如下問題的解決方案
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position 0: ordinal not in range(128)

0.必須的編碼聲明

想要在代碼中涉及非ASCII編碼的處理,必須在程序的最前面指定

#coding:utf-8

來指示python文件本身的編碼為utf-8(或者其他編碼)

1.通用解決方案

在主函數(shù)中加入

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

2.寫入文件時不能編碼的解決方案

由于python2中的builtin的open函數(shù)不能指定字符集,所以,str格式的字符串必須先進行編碼才能寫入文件,編碼可根據(jù)需要指定

3.數(shù)據(jù)庫中亂碼的解決方案

首先要將數(shù)據(jù)庫本身的編碼調(diào)整為UTF-8
使用

SHOW VARIABLES LIKE "%char%";

查看數(shù)據(jù)庫本身的編碼
在連接數(shù)據(jù)庫的時候就指定好,使用MysqlDb模塊的時候,使用connet函數(shù)需指定charset='utf-8'

使用其他ORM或者數(shù)據(jù)庫框架的時候也應(yīng)在配置或者連接的函數(shù)中指定好字符集為UTF-8

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容