RAW或ACP代码页,哪一个最适合?

时间:2015-04-06 11:50:26

标签: sql-server codepages

我正在尝试使用bcp实用程序自动导入/导出一些带有特殊字符的文件(比方说UTF)。但是,我只能在使用代码页RAW和ACP批量插入或导出时执行此操作。

我有不同的教育背景,所以我的问题是:我应该选择哪一个?

根据我的理解,RAW不会转换任何字符代码。但是我不确定它会带来什么问题,因为ACP使用得更多,所以它必须是有原因的。

2 个答案:

答案 0 :(得分:1)

避免因代码页差异导致字符丢失的最佳方法是使用Unicode数据文件,因为Unicode不使用代码页。你提到UTF(UTF-8?),这意味着数据是Unicode,所以你应该使用Unicode文件。有关Unicode字符格式的详细信息,请参阅https://msdn.microsoft.com/en-us/library/ms188289.aspx

在代码页之间转换非Unicode数据时,始终存在丢失字符的可能性。对于varchar / char列,源列和目标列排序规则必须相同才能确保以相同方式映射字符。此外,对于非unicode文件,指定的文件代码页必须与源/目标列排序规则或RAW相同。 RAW基本上意味着char / varchar列的源和目标归类是相同的(因此具有相同的代码页)。如果实际的归类代码页不同且指定了RAW,则ASCII范围0-127之外的字符可能无法正确转换。

ACP与指定广泛使用的代码页1252相同,因此如果实际的列整理代码页是不同的代码页,则可能会出现问题。

答案 1 :(得分:0)

如果使用-N参数,则可以根据数据的bcp检查强制bcp对某些字符使用unicode。我认为每个字符使用两个字节,并且应该完成这项工作。