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

Python利用 utf-8-sig 編碼格式解決寫入 csv 文件亂碼問題

 更新時間:2020年02月21日 11:38:47   作者:TRHX  
這篇文章主要介紹了Python利用 utf-8-sig 編碼格式解決寫入 csv 文件亂碼問題,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下

先舉個例子,分別以不指定編碼、指定編碼為 utf-8指定編碼為 utf-8-sig 三種方式來做比較,再將寫入 csv 文件和 txt 文件來做個對比

一、不指定編碼方式,直接存入 csv 文件

import csv

with open('test.csv', 'w') as fp:
 writer = csv.writer(fp)
 writer.writerow(['漢語', '俄語', '韓語', '日語', '英語'])
 writer.writerow(['愛你', 'люблю тебя', '사랑해요', '愛しています', 'love you'])

此時運行程序會報以下錯誤:

UnicodeEncodeError: 'gbk' codec can't encode character '\uc0ac' in position 14: illegal multibyte sequence

二、指定編碼為 utf-8,再存入 csv 文件

接下來嘗試將內容以 utf-8 編碼方式存入 test.csv 文件中,可以看到除了英文,其他的全都是亂碼:

import csv

with open('test.csv', 'w', encoding='utf-8') as fp:
 writer = csv.writer(fp)
 writer.writerow(['漢語', '俄語', '韓語', '日語', '英語'])
 writer.writerow(['愛你', 'люблю тебя', '사랑해요', '愛しています', 'love you'])

在這里插入圖片描述

三、指定編碼為 utf-8-sig,再存入 csv 文件

當將編碼方式換成 utf-8-sig 之后,顯示為正常:

import csv

with open('test.csv', 'w', encoding='utf-8-sig') as fp:
 writer = csv.writer(fp)
 writer.writerow(['漢語', '俄語', '韓語', '日語', '英語'])
 writer.writerow(['愛你', 'люблю тебя', '사랑해요', '愛しています', 'love you'])

在這里插入圖片描述

四、不指定編碼方式,直接存入 txt 文件

with open('test.txt','w') as fp:
 fp.write('愛你, люблю тебя, 사랑해요, 愛しています, love you')

和存入 csv 文件一樣,也會報以下錯誤:

UnicodeEncodeError: 'gbk' codec can't encode character '\uc0ac' in position 16: illegal multibyte sequence

五、指定編碼為 utf-8 / utf-8-sig,再存入 txt 文件

utf-8 或者 utf-8-sig 編碼方式存入 test.txt 文件中,內容都是完全正常的:

ith open('test.txt','w', encoding='utf-8') as fp:
  fp.write('愛你, люблю тебя, 사랑해요, 愛しています, love you')

with open('test.txt','w', encoding='utf-8-sig') as fp:
  fp.write('愛你, люблю тебя, 사랑해요, 愛しています, love you')

在這里插入圖片描述

utf-8 與 utf-8-sig 有什么區(qū)別?

  • utf-8 以字節(jié)為編碼單元,它的字節(jié)順序在所有系統中都是一樣的,沒有字節(jié)序問題,也因此它實際上并不需要 BOM;
  • uft-8-sig 中 sig 全拼為 signature,即帶有簽名的 utf-8(UTF-8 with BOM);
  • BOM 全稱 ByteOrder Mark,字節(jié)順序標記,出現在文本文件頭部,Unicode編碼標準中用于標識文件是采用哪種格式的編碼。

為什么寫入 csv 文件要用 utf-8-sig 編碼?

  • Excel 在讀取 csv 文件的時候是通過讀取文件頭上的 BOM 來識別編碼的,如果文件頭無 BOM 信息,則默認按照 Unicode 編碼讀取。
  • 當我們使用 utf-8 編碼來生成 csv 文件的時候,并沒有生成 BOM 信息,Excel 就會自動按照 Unicode 編碼讀取,就會出現亂碼問題了。

為什么寫入 txt 文件要用 utf-8 編碼?

在寫入 txt 文件時,Windows 會默認轉碼成 gbk,遇到某些 gbk 不支持的字符就會報錯,在打開文件時就聲明編碼方式為 utf-8 就能避免這個錯誤。

知識點擴展:

utf-8和utf-8-sig的區(qū)別

前言:在寫入csv文件中,出現了亂碼的問題。

解決:utf-8 改為utf-8-sig

區(qū)別如下:

1、”utf-8“ 是以字節(jié)為編碼單元,它的字節(jié)順序在所有系統中都是一樣的,沒有字節(jié)序問題,因此它不需要BOM,所以當用"utf-8"編碼方式讀取帶有BOM的文件時,它會把BOM當做是文件內容來處理, 也就會發(fā)生類似上邊的錯誤.

2、“uft-8-sig"中sig全拼為 signature 也就是"帶有簽名的utf-8”, 因此"utf-8-sig"讀取帶有BOM的"utf-8文件時"會把BOM單獨處理,與文本內容隔離開,也是我們期望的結果.

總結

以上所述是小編給大家介紹的Python利用 utf-8-sig 編碼格式解決寫入 csv 文件亂碼問題,希望對大家有所幫助,也非常感謝大家對腳本之家網站的支持!

相關文章

  • python實現將JSON文件中的數據格式化處理

    python實現將JSON文件中的數據格式化處理

    JSON是一種輕量級的數據交換格式,常用于Web服務間的數據傳輸,Python內置了??json??模塊,能夠方便地進行JSON數據的解析與格式化,本文將通過具體的Python代碼實例,深入探討如何將JSON文件中的數據進行格式化處理,需要的朋友可以參考下
    2024-03-03
  • 基于Python制作一個解壓的內存加速球

    基于Python制作一個解壓的內存加速球

    安全管家助手什么的上總會帶一個內存加速球,有關掉進程以及內存清理的功能,本文就來利用Python制作一個解壓的內存加速球,有需要的小伙伴可以參考下
    2023-10-10
  • python之擬合的實現

    python之擬合的實現

    這篇文章主要介紹了python之擬合的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • python實現一個簡單的貪吃蛇游戲附代碼

    python實現一個簡單的貪吃蛇游戲附代碼

    這篇文章主要介紹了python實現一個簡單的貪吃蛇游戲附代碼,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-06-06
  • Python json格式化打印實現過程解析

    Python json格式化打印實現過程解析

    這篇文章主要介紹了Python json格式化打印實現過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • python微信公眾號之關鍵詞自動回復

    python微信公眾號之關鍵詞自動回復

    這篇文章主要為大家詳細介紹了python微信公眾號之關鍵詞自動回復,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • python調用另外一個py文件中函數的具體步驟

    python調用另外一個py文件中函數的具體步驟

    這篇文章主要給大家介紹了關于python調用另外一個py文件中函數的具體步驟,要在一個Python文件中調用其他Python文件中的方法,可以使用Python的模塊導入功能,需要的朋友可以參考下
    2023-11-11
  • python利用OpenCV2實現人臉檢測

    python利用OpenCV2實現人臉檢測

    這篇文章主要為大家詳細介紹了python利用OpenCV2實現人臉檢測,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • python實現小世界網絡生成

    python實現小世界網絡生成

    今天小編就為大家分享一篇python實現小世界網絡生成,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python 中拼音庫 PyPinyin 用法詳解

    Python 中拼音庫 PyPinyin 用法詳解

    很多朋友問小編怎樣把一批中文文件轉拼音命名呢?下面就讓我們來了解 Python 的一個庫 PyPinyin 吧,感興趣的朋友跟隨小編一起看看吧
    2021-05-05

最新評論