Python MS SQL Server Management Studio导出到CSV在读取数据时引入了额外字符

Python MS SQL Server Management Studio导出到CSV在读取数据时引入了额外字符,python,pandas,ssms,Python,Pandas,Ssms,我正在使用MS SQL Server Management Studio,我有一个包含以下数据的简单表: CountryId CommonName FormalName --------- ---------- ---------- 1 Afghanistan Islamic State of Afghanistan 2 Albania Republic of Albania 3 Alger

我正在使用MS SQL Server Management Studio,我有一个包含以下数据的简单表:

CountryId     CommonName  FormalName
---------     ----------  ----------
        1    Afghanistan  Islamic State of Afghanistan
        2        Albania  Republic of Albania
        3        Algeria  People's Democratic Republic of Algeria
        4        Andorra  Principality of Andorra
我使用“将结果另存为”以默认UTF8编码将此数据保存到
countries.csv
。然后我进入iPython并使用pandas将其读入数据帧:

df = pd.read_csv("countries.csv")
如果我这样做

df.columns
我得到:

Index([u'CountryId', u'CommonName', u'FormalName'], dtype='object')
奇怪的是,当我复制列名,将其粘贴到新单元格中,然后按Enter键时,我得到:

u'\ufeffCountryId', u'CommonName', u'FormalName'
unicode字符
\ufeff
显示在第一个列名的开头

我用不同的表格尝试了这个过程,每次我都得到了额外的字符。它只发生在第一个列名上


有人能解释一下为什么会出现额外的unicode字符吗

尝试将
encoding=“utf-8-sig”
选项与
read\u csv
一起使用。例如:

df = pd.read_csv("countries.csv", encoding = "utf-8-sig")

这样就可以忽略CSV文件开头的Unicode字节顺序标记(BOM)。此处不需要使用BOM,因为UTF-8文件没有字节顺序,但Microsoft工具喜欢将其用作识别UTF-8编码文本文件的幻数。

尝试使用
encoding=“UTF-8-sig”
选项和
read\u csv
。例如:

df = pd.read_csv("countries.csv", encoding = "utf-8-sig")

这样就可以忽略CSV文件开头的Unicode字节顺序标记(BOM)。此处不需要使用BOM,因为UTF-8文件没有字节顺序,但Microsoft工具喜欢将其用作识别UTF-8编码文本文件的幻数。

尝试使用
encoding=“UTF-8-sig”
选项和
read\u csv
。例如:

df = pd.read_csv("countries.csv", encoding = "utf-8-sig")

这样就可以忽略CSV文件开头的Unicode字节顺序标记(BOM)。此处不需要使用BOM,因为UTF-8文件没有字节顺序,但Microsoft工具喜欢将其用作识别UTF-8编码文本文件的幻数。

尝试使用
encoding=“UTF-8-sig”
选项和
read\u csv
。例如:

df = pd.read_csv("countries.csv", encoding = "utf-8-sig")

这样就可以忽略CSV文件开头的Unicode字节顺序标记(BOM)。此处不需要使用BOM,因为UTF-8文件没有字节顺序,但Microsoft工具喜欢将其用作识别UTF-8编码文本文件的神奇数字。

这就是UTF-16 BE BOM:当您复制和粘贴时,看起来好像发生了从UTF-8到UTF-16的无声转换。您是如何复制列名的?@EdChum只需突出显示并复制我在您要复制时所指的应用程序将来自MS SQL、文本编辑器、python控制台等的数据放入剪贴板。。你是从哪个应用程序做的,您还可以发布数据和复制步骤这是utf-16 BE BOM:当您复制和粘贴时,看起来好像有一些从utf-8到utf-16的无声转换正在发生。您是如何复制列名的?@EdChum只需突出显示和复制我指的是什么应用程序,因为您要将MS SQL中的数据复制到剪贴板中,文本编辑器、python控制台等。。你是从哪个应用程序做的,您还可以发布数据和复制步骤这是utf-16 BE BOM:当您复制和粘贴时,看起来好像有一些从utf-8到utf-16的无声转换正在发生。您是如何复制列名的?@EdChum只需突出显示和复制我指的是什么应用程序,因为您要将MS SQL中的数据复制到剪贴板中,文本编辑器、python控制台等。。你是从哪个应用程序做的,您还可以发布数据和复制步骤这是utf-16 BE BOM:当您复制和粘贴时,看起来好像有一些从utf-8到utf-16的无声转换正在发生。您是如何复制列名的?@EdChum只需突出显示和复制我指的是什么应用程序,因为您要将MS SQL中的数据复制到剪贴板中,文本编辑器、python控制台等。。你是从哪个应用程序做这件事的,你还可以发布数据和复制步骤吗