如何检查CSV文件的编码

时间:2016-05-12 04:07:42

标签: csv encoding

我有一个CSV文件,我希望了解它的编码。 Microsoft Excel中是否有可以帮助我检测它的菜单选项

或者我是否需要使用C#或PHP等编程语言来推断它。

9 个答案:

答案 0 :(得分:36)

您可以使用记事本打开文件,然后转到文件 - >另存为。在“保存”按钮旁边会有一个编码下拉列表,将在那里选择文件的当前编码。

答案 1 :(得分:21)

在Linux系统中,您可以使用 file 命令。它将提供正确的编码

样品:

file blah.csv

输出:

blah.csv: ISO-8859 text, with very long lines

答案 2 :(得分:5)

如果使用Python,则只需使用print()函数来检查csv文件的编码。例如:

with open('file_name.csv') as f:
    print(f)

输出是这样的:

<_io.TextIOWrapper name='file_name.csv' mode='r' encoding='utf8'>

答案 3 :(得分:3)

您还可以使用python chardet库

# install the chardet library
!pip install chardet

# import the chardet library
import chardet 

# use the detect method to find the encoding
# 'rb' means read in the file as binary
with open("test.csv", 'rb') as file:
    print(chardet.detect(file.read()))

答案 4 :(得分:2)

使用 chardet https://github.com/chardet/chardet(文档简短易读)。

安装python,然后pip install chardet,最后使用命令行命令。

我在GB2312下测试过它非常准确。 (确保您至少有几个字符,只有1个字符的样本可能很容易失败)。

你可以看到

file不可靠。

enter image description here

答案 5 :(得分:1)

在Python中,您可以尝试...

from encodings.aliases import aliases
alias_values = set(aliases.values())

for encoding in set(aliases.values()):
    try:
        df=pd.read_csv("test.csv", encoding=encoding)
        print('successful', encoding)
    except:
        pass

答案 6 :(得分:1)

或者你可以在 python 控制台或 Jupyter Notebook 中执行:

import csv
data = open("file.csv","r") 
data

您将看到有关数据对象的信息,如下所示:

<_io.TextIOWrapper name='arch.csv' mode='r' encoding='cp1250'>

如您所见,它包含编码信息。

答案 7 :(得分:1)

CSV 文件没有指示编码的标题。

你只能通过观察来猜测:

  • 创建文件的平台/应用程序
  • 文件中的字节

2021年表情包被广泛使用,但很多导入工具导入失败。上面的答案中经常推荐使用 chardet 库,但该库不能很好地处理表情符号。

icecream = '?'

import csv

with open('test.csv', 'w') as f:
    wf = csv.writer(f)
    wf.writerow(['ice cream', icecream])


import chardet
with open('test.csv', 'rb') as f:
    print(chardet.detect(f.read()))

{'encoding': 'Windows-1254', 'confidence': 0.3864823918622268, 'language': 'Turkish'}

这会在尝试使用此编码读取文件时产生 UnicodeDecodeError。

Mac 上的默认编码是 UTF-8。它明确包含在此处,但这甚至没有必要……但在 Windows 上可能是。

with open('test.csv', 'r', encoding='utf-8') as f:
    print(f.read())

ice cream,?

file 命令也选择了这一点

file test.csv
test.csv: UTF-8 Unicode text, with CRLF line terminators

我在 2021 年的建议,如果自动检测出错:在求助于 UTF-8 之前先尝试 chardet

答案 8 :(得分:0)

只需添加与您尝试上传的文件匹配的 encoding 参数。

open('example.csv', encoding='UTF8')