日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python中文字符编码问题

發布時間:2025/6/17 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中文字符编码问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

問題來源:需要對爬取到的如下文本進行分隔,且以“:”(中文冒號)進行分隔。

對應文本分隔代碼:

IrmComTemp = IrmCom.strip().split(unicode(':','utf-8'))

問題1描述:出現如下錯誤:SyntaxError: Non-ASCII character '\xef' in file?

問題1解決:在源碼第一行(必須保證是第一行)添加如下字符編碼限定語句:

# -*- coding: UTF-8 -*-

問題1原因:python2會默認使用ASCII編碼,而ASCII編碼不支持中文,所以會出現異常(具體回顧之前關于編碼的文章)。如果要在python2的py文件里面寫中文,則必須要添加這一行聲明文件編碼的注釋。

問題2描述:添加之后又出現UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 0:錯誤

問題2解決:

#錯誤代碼 IrmComTemp = IrmCom.strip().split(':','utf-8') #正確代碼 IrmComTemp = IrmCom.strip().split(unicode(':','utf-8'))

問題2原因:(參考'ascii' codec can't decode byte 0xef in position 0:ordinal not in range(128)錯誤解決與原理分析)utf-8只是Unicode字碼表的編碼方式,Unicode除此之外還可以使用utf-16等編碼成byte code儲存,在Python中我們已經指定了utf-8編碼方式,那么所有帶中文的字符串都會被認為是utf-8編碼的byte string(例如:':'),但是在函數中所產生的字符串則被認為是unicode string。unicode string 和 byte string 是不可以混合使用的,一旦混合使用了,就會產生這樣的錯誤。

本文中,函數返回的爬取下來的網頁被認為是Unicode string,':'被認為是byte string,由于預設的解石馬器(醉了,提交的時候說這里敏感。。。。)是ascii,所以就不能識別中文byte string。然后就報錯了。

參考的博文中作者提供了兩種解決方案:1》unicode string轉byte string;2》byte string 轉unicode string。總之就是統一編碼。

由于對爬取下來的網頁進行轉換比較麻煩,所以我們這里使用byte轉unicode的方案,另一種方案尚待嘗試。

轉載于:https://my.oschina.net/u/3636678/blog/1860243

總結

以上是生活随笔為你收集整理的python中文字符编码问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。