欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決python中文亂碼問題方法總結(jié)

 更新時(shí)間:2021年05月05日 13:10:18   投稿:WDC  
這篇文章主要介紹了解決python中文亂碼問題方法總結(jié),需要的朋友可以參考下

在運(yùn)行這樣類似的代碼:

#!/usr/bin/env pythons="中文"print s

最近經(jīng)常遇到這樣的問題:

問題一:

SyntaxError: Non-ASCII character '\xe4' in file E:\coding\python\Untitled 6.py on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

問題二:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 108: ordinal not in range(128)

問題三:

UnicodeEncodeError: 'gb2312' codec can't encode character u'\u2014' in position 72366: illegal multibyte sequence

這些都是跟字符編碼有關(guān)的問題,很郁悶,中文總是弄不出來,找了很多方案,這里有些是我前幾天找到的一些方案,拿出來給大家分享一下哈

字符串在Python內(nèi)部的表示是unicode 編碼,因此,在做編碼轉(zhuǎn)換時(shí),通常需要以u(píng)nicode作為中間編碼,即先將其他編碼的字符串解碼(decode)成unicode,再從unicode編碼(encode)成另一種編碼。

decode的作用是將其他編碼的字符串轉(zhuǎn)換成unicode編碼,如str1.decode('gb2312'),表示將gb2312編碼的字符串str1轉(zhuǎn)換成unicode編碼。

encode的作用是將unicode編碼轉(zhuǎn)換成其他編碼的字符串,如str2.encode('gb2312'),表示將unicode編碼的字符串str2轉(zhuǎn)換成gb2312編碼。

在某些IDE中,字符串的輸出總是出現(xiàn)亂碼,甚至錯(cuò)誤,其實(shí)是由于IDE的結(jié)果輸出控制臺(tái)自身不能顯示字符串的編碼,而不是程序本身的問題。

如在UliPad中運(yùn)行如下代碼:

s=u"中文"print s

會(huì)提示:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

這是因?yàn)閁liPad在英文WindowsXP 上的控制臺(tái)信息輸出窗口是按照ascii編碼輸出的(英文系統(tǒng)的默認(rèn)編碼是ascii),而上面代碼中的字符串是Unicode編碼的,所以輸出時(shí)產(chǎn)生了錯(cuò)誤。

將最后一句改為:print s.encode('gb2312')

則能正確輸出“中文”兩個(gè)字。

若最后一句改為:print s.encode('utf8')

則輸出:\xe4\xb8\xad\xe6\x96\x87,這是控制臺(tái)信息輸出窗口按照ascii編碼輸出utf8編碼的字符串的結(jié)果。

下面代碼可能比較通用一些,如下:

#!/usr/bin/env python  #coding=utf-8  s="中文"if isinstance(s,unicode):     #s=u"中文"      print s.encode('gb2312') else:     #s="中文"      print s.decode('utf-8').encode('gb2312')#!/usr/bin/env python#coding=utf-8s="中文"if isinstance(s,unicode): #s=u"中文" print s.encode('gb2312')else: #s="中文" print s.decode('utf-8').encode('gb2312')

看看下面一段代碼:

#!/usr/bin/env python  #coding=utf-8  #python version:2.7.4 #system:windows xp    import httplib2def getPageContent(url):    '''''    使用httplib2用編程的方式根據(jù)url獲取網(wǎng)頁內(nèi)容    將bytes形式的內(nèi)容轉(zhuǎn)換成utf-8的字符串    '''    #使用ie9的user-agent,如果不設(shè)置user-agent將會(huì)得到403禁止訪問     headers={'user-agent':'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)',            'cache-control':'no-cache'}    if url:         response,content= httplib2.Http().request(url,headers=headers)                     if response.status== 200 :            return content
import sys  reload(sys)  sys.setdefaultencoding('utf-8')  #修改默認(rèn)編碼方式,默認(rèn)為ascci print sys.getdefaultencoding()   content= getPageContent("http://www.oschina.net/")print content.decode('utf-8').encode('gb2312')#!/usr/bin/env python#coding=utf-8#python version:2.7.4#system:windows xpimport httplib2def getPageContent(url):    '''    使用httplib2用編程的方式根據(jù)url獲取網(wǎng)頁內(nèi)容    將bytes形式的內(nèi)容轉(zhuǎn)換成utf-8的字符串    '''    #使用ie9的user-agent,如果不設(shè)置user-agent將會(huì)得到403禁止訪問    headers={'user-agent':'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)',            'cache-control':'no-cache'}    if url:         response,content= httplib2.Http().request(url,headers=headers)                   if response.status== 200 :            return content
import sysreload(sys)sys.setdefaultencoding('utf-8')  #修改默認(rèn)編碼方式,默認(rèn)為ascciprint sys.getdefaultencoding()content= getPageContent("http://www.dbjr.com.cn/")print content.decode('utf-8').encode('gb2312')

上面的代碼的意思:向www.dbjr.com.cn網(wǎng)站請(qǐng)求他的主頁,(如果直接是utf-8編碼,不能輸出中文)想將編碼方式為utf-8轉(zhuǎn)向gd2312,出現(xiàn)問題三

當(dāng)我把它將print content.decode('utf-8').encode('gb2312')改成print content.decode('utf-8').encode('gb2312', ‘ignore')時(shí),OK了,可以顯示中文了,但不敢確定是否為全部,貌似只有部分吧,有些不能用gb2312編碼

然而,當(dāng)我把網(wǎng)站換成 www.soso.com時(shí),不用轉(zhuǎn)為gb2312,用utf-8即可正常顯示中文

總結(jié)一下:

向文件直接輸出ss會(huì)拋出同樣的異常。在處理unicode中文字符串的時(shí)候,必須首先對(duì)它調(diào)用encode函數(shù),轉(zhuǎn)換成其它編碼輸出。這一點(diǎn)對(duì)各個(gè)環(huán)境都一樣。在Python中,“str”對(duì)象就是一個(gè)字節(jié)數(shù)組,至于里面的內(nèi)容是不是一個(gè)合法的字符串,以及這個(gè)字符串采用什么編碼(gbk, utf-8, unicode)都不重要。這些內(nèi)容需要用戶自己記錄和判斷。這些的限制也同樣適用于“unicode”對(duì)象。要記住“unicode”對(duì)象中的內(nèi)容可絕對(duì)不一定就是合法的unicode字符串,我們很快就會(huì)看到這種情況。在windows的控制臺(tái)上,支持gbk編碼的str對(duì)象和unicode編碼的unicode對(duì)象。

更多關(guān)于解決python中文亂碼問題方法總結(jié)的文章請(qǐng)查看下面的相關(guān)鏈接

相關(guān)文章

  • pytorch模型的定義、修改、讀取、斷點(diǎn)續(xù)訓(xùn)深入解析

    pytorch模型的定義、修改、讀取、斷點(diǎn)續(xù)訓(xùn)深入解析

    模型定義是深度學(xué)習(xí)中重要的一環(huán),PyTorch提供了強(qiáng)大而靈活的工具和函數(shù),使我們能夠輕松定義各種類型的深度學(xué)習(xí)模型,通過深入理解模型定義的原理和應(yīng)用,我們能夠更好地理解和設(shè)計(jì)自己的模型,從而提升深度學(xué)習(xí)任務(wù)的性能和效果
    2024-03-03
  • python+opencv識(shí)別圖片中的圓形

    python+opencv識(shí)別圖片中的圓形

    這篇文章主要為大家詳細(xì)介紹了python+opencv識(shí)別圖片中的圓形 ,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Python的消息隊(duì)列包SnakeMQ使用初探

    Python的消息隊(duì)列包SnakeMQ使用初探

    使用消息隊(duì)列在數(shù)據(jù)的通信中擁有很多優(yōu)點(diǎn),SnakeMQ是一個(gè)開源的用Python實(shí)現(xiàn)的跨平臺(tái)MQ庫,well,Python的消息隊(duì)列包SnakeMQ使用初探,here we go:
    2016-06-06
  • python3實(shí)現(xiàn)多線程聊天室

    python3實(shí)現(xiàn)多線程聊天室

    這篇文章主要為大家詳細(xì)介紹了python3實(shí)現(xiàn)多線程聊天室,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • python語言實(shí)現(xiàn)貪吃蛇游戲

    python語言實(shí)現(xiàn)貪吃蛇游戲

    這篇文章主要為大家詳細(xì)介紹了python語言實(shí)現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 用Python輸出一個(gè)楊輝三角的例子

    用Python輸出一個(gè)楊輝三角的例子

    這篇文章主要介紹了用Python和erlang輸出一個(gè)楊輝三角的例子,同時(shí)還提供了一個(gè)erlang版楊輝三角,需要的朋友可以參考下
    2014-06-06
  • Python全棧之強(qiáng)制轉(zhuǎn)換

    Python全棧之強(qiáng)制轉(zhuǎn)換

    這篇文章主要為大家介紹了Python強(qiáng)制轉(zhuǎn)換,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • Python操作JSON文件的知識(shí)點(diǎn)整理

    Python操作JSON文件的知識(shí)點(diǎn)整理

    Python?提供了內(nèi)置的?json?模塊來處理?JSON?格式的文件。該模塊主要分為讀取和寫入?JSON?文件。本文主要為大家整理了一些Python操作JSON文件的知識(shí)點(diǎn),需要的可以參考一下
    2023-01-01
  • Python學(xué)習(xí)筆記整理3之輸入輸出、python eval函數(shù)

    Python學(xué)習(xí)筆記整理3之輸入輸出、python eval函數(shù)

    這篇文章主要介紹了Python學(xué)習(xí)筆記整理3之輸入輸出、python eval函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2015-12-12
  • python打印exception信息的方法

    python打印exception信息的方法

    這篇文章主要介紹了python打印exception信息的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-05-05

最新評(píng)論