BCP和ó的字符编码问题

时间:2015-05-06 16:48:15

标签: sql-server unicode character-encoding bcp

我有一个需要去波兰的文件。在我的数据中,我有一个ó。当我将数据输出到表格时,ó仍然存在,因为字段为NVARCHAR。当我从表中剪切并粘贴到Excel或Notepad ++时,ó保持

当我使用BCP实用程序导出数据时,如果我在Excel或Notepad ++中打开生成的文本文件,ó将更改为¢。如果我更改编码,有时字符变为˘

我尝试过以下命令行开关,一次一个。 -n -N -w

1 个答案:

答案 0 :(得分:6)

你有没有看过-C

-C { ACP | OEM | RAW | code_page }

    Specifies the code page of the data in the data file. code_page is
    relevant only if the data contains char, varchar, or text columns
    with character values greater than 127 or less than 32. 

鉴于您的表的数据类型是Unicode(NVARCHAR),您还必须使用-c(可能会丢失一些Unicode字符)

-c
    Performs the operation using a character data type. This option
    does not prompt for each field; it uses char as the storage type,
    without prefixes and with \t (tab character) as the field
    separator and \r\n (newline character) as the row terminator. -c
    is not compatible with -w.

    For more information, see [Use Character Format to Import or
    Export Data (SQL Server)].
CREATE TABLE [dbo].[Test] (
    [test] [nvarchar](100) NOT NULL
);  

INSERT [dbo].[Test] ([test]) VALUES (N'helló wórld');
bcp dbo.Test out dbo.Test.dat -c -T -C ACP
只要Notepad ++可以检测到编码(UCS-2 Little Endian),没有-w-c

-C ACP也应该有效。使用Notepad ++ 6.7.7我的简单示例没问题。

Notepad++

来源:https://msdn.microsoft.com/en-us/library/ms162802.aspx