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

歡迎訪問 生活随笔!

生活随笔

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

python

python中解决中文乱码

發布時間:2025/3/19 python 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中解决中文乱码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

解決中文亂碼

  • 什么是字符編碼
  • python 的字符編碼
    • encode和decode
      • unicode還可以decode嗎?
      • UTF-8還可以encode嗎?
  • 解決中文編碼問題
    • 問題1:使用requests獲取網站內容后,出現中文亂碼
    • 問題2:非法字符拋出異常
    • 問題3:網頁可能使用了gzip壓縮
    • 問題4:讀取文件的中文亂碼

什么是字符編碼

總的來說,字符串的編碼都只有兩大類:

  • 通用的Unicode編碼。
  • 將Unicode轉化成的某種類型的編碼。如UTF-8、GBH等。
  • Unicode 被稱為統一碼、萬國碼或單一碼。它為每種語言中的每個字符設定了統一的并且唯一的二進制編碼。
    為了節省空間,開發了一些中間格式的字符集。被稱為通用轉換格式UnicodeTransformation Format(UTF),常見的有 UTF?8 和 UTF?16。
    隨著互聯網的普及,強烈要求出現一種統一的編碼方式, UTF?8 就是在互聯
    網上使用最廣的一種Unicode的實現方式。 UTF?8 最大的一個特點是長度可變,它可以使用1一4個字節表示一個符號,英文字母通常被編為1個字節,漢字通常。被編為3個字節,如表 所示。

    字符ASCIIUnicodeUTF-8
    A0100000100000000 0100000101000001
    01001110 0010110111100100 10111000 10101101

    對于 UTF?8 編碼,怎么知道什么時候是1個字節,什么時候是3個字節呢?
    其實, UTF?8 的編碼規則很簡單,只有兩條:

  • (1)對于單字節的符號,字節的第1位設為0,后面7位為這個符號的
    Unicode碼。因此對于英語字母。 UTF?8 編碼和ASCII碼是相同的。
  • 對于n字節的符號 (n>1),第1個字節的前n位都設為1,第 n+1 位設為0,后面字節的前兩位一律設為10,剩下的沒有提及的二進制位全部為這個符號的Unicode碼。例如,上述字符A為單字節符號,其 UTF?8 編碼字節的第1位是0。而漢字“中”為3個字節符號,第1個字節的前3位都設為1,第1個字節的第4位為。
  • python 的字符編碼

    再python中字符的編碼使用str和bytes編碼兩種類型。

  • str字符串:使用Unicode編碼。
  • bytes字符串:使用將Unicode轉化成的某種類型的編碼,如UTF-8

    python3默認字符型編碼為Unicode,但python2則不是。
  • encode和decode

    • encode作用是將Unicode轉化成的某種類型的編碼。
    • decode作用是將其他編碼的字符串轉換成Unicode編碼。

    unicode還可以decode嗎?

    腦洞大開呀,答案是不可以的,unicode不可以再被解碼。

    UTF-8還可以encode嗎?

    答案是不可以直接解碼,可以節間。就是要先將UTF-8轉成Unicode,再進行encode

    解決中文編碼問題

    問題1:使用requests獲取網站內容后,出現中文亂碼

    如r = requests.get(url)
    可以先用r.encoding查看其對應的編碼格式,如果是gb2312
    就加上r.encode ='gb2312'

    問題2:非法字符拋出異常

    當我們將某個字符串從GBK解碼為Unicode時,可以用

    str.decode('GBK')

    如果報錯可以是一個頁面中有多中編碼,于是出現了非法字符。
    可以使用ignore忽略掉

    str.decode('GBK','ignore')

    問題3:網頁可能使用了gzip壓縮

    解決方法是:使用r.content會自動解碼gzip和deflate。

    r = requests.get(url) after_gzip = r.content print(after_gzip.decode('UTF-8')

    問題4:讀取文件的中文亂碼

    我們必須在讀取文件的時候聲明編碼格式。如

    result_utf8 = open('test_utf8.txt','r',encoding='UTF-8').read() print(result_utf8)

    同理保存的時候也一樣

    title = '我么' with open('title.txt','a+',encoding ='UTF-8') as f:f.write(title)f.close()

    總結

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

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