Sql 大容量插入后特殊字符显示不正确

Sql 大容量插入后特殊字符显示不正确,sql,sql-server-2012,bulkinsert,nvarchar,Sql,Sql Server 2012,Bulkinsert,Nvarchar,我正在使用批量插入导入CSV文件。CSV文件中的一列包含一些包含分数的值(例如1m½f) 我不需要对分数进行任何数学运算,因为这些值只用于显示目的,所以我将列设置为nvarchar。批量插入有效,但当我查看SQL中的记录时,分数已替换为一个分符号(、),因此显示的文本为1m、f 我很想了解为什么会发生这种情况,以及如何解决这个问题的想法。批量插入命令是: BULK INSERT dbo.temp FROM 'C:\Temp\file.csv' WITH (FIELDTERMINATOR = '

我正在使用
批量插入
导入CSV文件。CSV文件中的一列包含一些包含分数的值(例如
1m½f

我不需要对分数进行任何数学运算,因为这些值只用于显示目的,所以我将列设置为
nvarchar
批量插入
有效,但当我查看SQL中的记录时,分数已替换为一个分符号(
),因此显示的文本为
1m、f

我很想了解为什么会发生这种情况,以及如何解决这个问题的想法。
批量插入
命令是:

BULK INSERT dbo.temp FROM 'C:\Temp\file.csv' 
WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n' );

您需要使用将字符串数据从Windows代码页1252转换为SQL Server代码页的
CODEPAGE='ACP'
,进行
BULK INSERT

BULK INSERT dbo.temp FROM 'C:\Temp\file.csv' 
WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n', CODEPAGE = 'ACP');
如果要在足够新的SQL Server版本上引入UTF-8数据:

[...] , CODEPAGE = '65001');

您可能还需要指定
DATAFILETYPE='char | native | widechar | wideative'

数据是否确实包含半个字符?是的,它包含½个字符,而不是1/2。@AaronBertrand,大容量插入是:
code
Bulk Insert dbo.temp,来自'C:\temp\file.csv'(FIELDTERMINATOR=',',ROWTERMINATOR='\n');排序规则为Latin1_General_CI_AS。如何检查文件是否标记为Unicode?您可以通过以下方式检查文件是否为Unicode:例如,在记事本中打开文件,然后转到文件>另存为。根据Windows的版本,您应该看到“编码”下拉菜单中的一些选项,如ANSI、UTF-8、Unicode、Unicode big-endian…@AaronBertrand,谢谢-它显示了ANSI。这也是我正确批量插入带有重音字符的ansii文本所需的,如è。谢谢@aaron bertrand。它对我部分有效。我在插入重音字符时遇到问题。用于考试ple:ä显示为Ã@user1417294文件的编码、列的数据类型和排序规则以及数据库和实例的排序规则是什么?