python csv文件通过多种编码表示字符_python学习笔记:read_csv()——encoding(字符解码)...

前言:

在使用pandas读取csv文件时,通常需要指定解码方式,最常用的是UTF-8。

UTF-8不解释了,国际化编码标准,html现在最标准的编码格式。

但是有时使用UTF-8还是会报错,到底是什么原因呢?

请看一个案例:

import pandas as pd

file_path=r'E:\test_data\AdventureWorksDW-data-warehouse-install-script\DimAccount.csv'

df = pd.read_csv(file_path,sep="|",encoding="utf-8",header=None,na_values='null',dtype=str)

运行后报错:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

接下来重点来了,请注意看报错语句,它提醒你utf-8不能解码0xff 。

那么0xff 是什么呢?

首先思考一个问题:既然有这么多编码方式,那文件打开的时候,windows系统是如何判断该使用哪种编码方式呢?

答案是 windows 在文件头部增加了几个字节以表示编码方式。三个字节(0xef, 0xbb, 0xbf)表示UTF-8;

两个字节(0xff, 0xfe或者0xfe, 0xff)表示UTF-16(Unicode);

无表示GB**。

你可能感兴趣的:(python,csv文件通过多种编码表示字符)