csv 文件編碼格式的判斷

1. 現(xiàn)狀

  • 后端接收到前端上傳的文件
  • 文件編碼格式赤嚼?
  • 我 ?株灸?萧福?
file = request.files["file"].read()

2. 可能接收的格式拉鹃?

    1. 打開文件


      dakaiwenjian
    1. 點擊文件選項卡的另存為按鈕


      lingcunwei
    1. 查看可選編碼格式


      chakan

3. 解決現(xiàn)狀

def string_encoding(data: bytes):
    """
    獲取字符編碼類型
    :param data: 字節(jié)數(shù)據(jù)
    :return:
    """
    UTF_8_BOM = b'\xef\xbb\xbf'
    CODES = ['UTF-8', 'GB18030', 'BIG5']
    # 遍歷編碼類型
    for code in CODES:
        try:
            data.decode(encoding=code)
            if 'UTF-8' == code and data.startswith(UTF_8_BOM):
                return 'UTF-8-SIG'
            return code
        except UnicodeDecodeError:
            continue
    return 'unknown'


file = request.files["test"].read()
format = string_encoding(file)
# 通過返回的編碼格式做不同處理
if format == "GB18030":
    file = file.decode("gbk")
elif format == "UTF-8-SIG":
    file = file.decode("utf-8")
  • 不同編碼格式的字節(jié)內(nèi)容
GB18030 編碼文件字節(jié)內(nèi)容
b'\xd3\xce\xcf\xb7\xc3\xfb\xb3\xc6,\xb9\xe3\xb8\xe6\xc3\xfb\xb3\xc6,\xca\xb1\xbc\xe4,\xbc\xc6\xb7\xd1\xb7\xbd\xca\xbd,\xb7\xb5\xc7\xb0\xcf\xfb\xba\xc4\r\n\xcd\xf2\xb9\xfa\xbe\xf5\xd0\xd1,RoC_And_T1_FR,2018-10-12,\xbc\xa4\xbb\xee,1000'

UTF-8-SIG 編碼文件字節(jié)內(nèi)容
b'\xef\xbb\xbf\xe6\xb8\xb8\xe6\x88\x8f\xe5\x90\x8d\xe7\xa7\xb0,\xe5\xb9\xbf\xe5\x91\x8a\xe5\x90\x8d\xe7\xa7\xb0,\xe6\x97\xb6\xe9\x97\xb4,\xe8\xae\xa1\xe8\xb4\xb9\xe6\x96\xb9\xe5\xbc\x8f,\xe8\xbf\x94\xe5\x89\x8d\xe6\xb6\x88\xe8\x80\x97\r\n\xe4\xb8\x87\xe5\x9b\xbd\xe8\xa7\x89\xe9\x86\x92,RoC_And_T1_FR,2018-10-12,\xe6\xbf\x80\xe6\xb4\xbb,1000'

  • 拓展
  • UTF-8以字節(jié)為編碼單元,它的字節(jié)順序在所有系統(tǒng)中都是一様?shù)啮耆蹋瑳]有字節(jié)序的問題膏燕,也因此它實際上并不需要BOM(“ByteOrder Mark”), 但是UTF-8 with BOM即utf-8-sig需要提供BOM("ByteOrder Mark")。
  • 在windows上使用open打開utf-8編碼的txt文件時開頭會有一個多余的字符
    它叫BOM,是用來聲明編碼等信息的
  • 為什么windows的記事本要強行給utf8加bom的原因——為了兼容舊系統(tǒng)的編碼問題饲窿,unix陣營放棄帶bom的utf8——為了讓它們的上古程序能繼續(xù)運行下去煌寇,這個各自有自己利益訴求的差異決定其實并不對錯
  • python3.5之后可以對參數(shù)指定類型
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市逾雄,隨后出現(xiàn)的幾起案子阀溶,更是在濱河造成了極大的恐慌,老刑警劉巖鸦泳,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件银锻,死亡現(xiàn)場離奇詭異,居然都是意外死亡做鹰,警方通過查閱死者的電腦和手機击纬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钾麸,“玉大人更振,你說我怎么就攤上這事》钩ⅲ” “怎么了肯腕?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長钥平。 經(jīng)常有香客問我实撒,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任知态,我火速辦了婚禮捷兰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘负敏。我一直安慰自己贡茅,他們只是感情好,可當我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布其做。 她就那樣靜靜地躺著友扰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪庶柿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天秽浇,我揣著相機與錄音浮庐,去河邊找鬼。 笑死柬焕,一個胖子當著我的面吹牛审残,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播斑举,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼搅轿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了富玷?” 一聲冷哼從身側(cè)響起璧坟,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎赎懦,沒想到半個月后雀鹃,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡励两,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年黎茎,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片当悔。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡傅瞻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出盲憎,到底是詐尸還是另有隱情嗅骄,我是刑警寧澤,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布焙畔,位于F島的核電站掸读,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜儿惫,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一澡罚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧肾请,春花似錦留搔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至饵逐,卻和暖如春括眠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背倍权。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工掷豺, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人薄声。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓当船,卻偏偏與公主長得像,于是被迫代替她去往敵國和親默辨。 傳聞我的和親對象是個殘疾皇子德频,可洞房花燭夜當晚...
    茶點故事閱讀 44,652評論 2 354

推薦閱讀更多精彩內(nèi)容