最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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 文件

接下來嘗試將內(nèi)容以 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 文件中,內(nèi)容都是完全正常的:

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

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

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

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

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

知識點擴展:

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

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

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

區(qū)別如下:

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

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

總結(jié)

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

相關(guān)文章

  • Python 多線程其他屬性以及繼承Thread類詳解

    Python 多線程其他屬性以及繼承Thread類詳解

    這篇文章主要介紹了Python 多線程其他屬性以及繼承Thread類詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • python批量連接服務(wù)器檢查容器是否正常

    python批量連接服務(wù)器檢查容器是否正常

    在生產(chǎn)中,我們可能有很多項目或者很多環(huán)境,可能會部署在幾百上千的服務(wù)器里面,我們該怎么定時去監(jiān)控這些服務(wù)器里面的容器服務(wù)器是否正常呢,本文就來為大家講解
    2024-01-01
  • Python如何獲取域名的SSL證書信息和到期時間

    Python如何獲取域名的SSL證書信息和到期時間

    在當今互聯(lián)網(wǎng)時代,SSL證書的重要性不言而喻,它不僅為用戶提供了安全的連接,還能提高網(wǎng)站的搜索引擎排名,那我們怎么才能通過Python獲取域名的SSL證書信息和到期時間呢,下面小編就來簡單講講吧
    2025-03-03
  • 使用Python實現(xiàn)給企業(yè)微信發(fā)送消息功能

    使用Python實現(xiàn)給企業(yè)微信發(fā)送消息功能

    本文將介紹如何使用python3給企業(yè)微信發(fā)送消息,文中有詳細的圖文解說及代碼示例,對正在學(xué)習(xí)python的小伙伴很有幫助,需要的朋友可以參考下
    2021-12-12
  • Python采集某網(wǎng)站文檔并保存word格式的示例

    Python采集某網(wǎng)站文檔并保存word格式的示例

    這篇文章主要介紹了Python采集某網(wǎng)站文檔并保存word格式的示例,我們平常需要下載文檔的時候,是不是發(fā)現(xiàn),要么不能下載,要么不能復(fù)制,那么我們今天來分享一下,如何用Python將這些不給下載的文檔給批量下載下來,需要的朋友可以參考下
    2023-07-07
  • Python實現(xiàn)動態(tài)給類和對象添加屬性和方法操作示例

    Python實現(xiàn)動態(tài)給類和對象添加屬性和方法操作示例

    這篇文章主要介紹了Python實現(xiàn)動態(tài)給類和對象添加屬性和方法操作,涉及Python面向?qū)ο蟪绦蛟O(shè)計中類與對象屬性、方法的動態(tài)操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2020-02-02
  • python實現(xiàn)分析apache和nginx日志文件并輸出訪客ip列表的方法

    python實現(xiàn)分析apache和nginx日志文件并輸出訪客ip列表的方法

    這篇文章主要介紹了python實現(xiàn)分析apache和nginx日志文件并輸出訪客ip列表的方法,涉及Python操作日志文件的技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • Pandas中DataFrame基本函數(shù)整理(小結(jié))

    Pandas中DataFrame基本函數(shù)整理(小結(jié))

    這篇文章主要介紹了Pandas中DataFrame基本函數(shù)整理(小結(jié)),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 使用python進行文本預(yù)處理和提取特征的實例

    使用python進行文本預(yù)處理和提取特征的實例

    今天小編就為大家分享一篇使用python進行文本預(yù)處理和提取特征的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • python協(xié)程異步IO中asyncio的使用

    python協(xié)程異步IO中asyncio的使用

    這篇文章主要介紹了python異步編程之a(chǎn)syncio的使用,python中異步IO操作是通過asyncio來實現(xiàn)的,為了更加詳細說明asyncio,我們先從協(xié)程的最基礎(chǔ)開始講解
    2023-12-12

最新評論

长兴县| 景洪市| 安阳县| 麻阳| 晋州市| 丹棱县| 达州市| 呼玛县| 西平县| 饶河县| 穆棱市| 陇西县| 郸城县| 永新县| 苏尼特左旗| 隆化县| 罗甸县| 许昌市| 宁武县| 桑植县| 原平市| 新津县| 珠海市| 宝山区| 绥宁县| 卓尼县| 辽宁省| 淳安县| 项城市| 绥江县| 教育| 邛崃市| 永昌县| 天长市| 乃东县| 隆德县| 施甸县| 平武县| 远安县| 茌平县| 南通市|