【问题标题】:RAW or ACP codepage, which one is best suited?RAW 或 ACP 代码页,哪个最适合?
【发布时间】:2015-04-06 11:50:26
【问题描述】:

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

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

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

【问题讨论】:

  • 你不能两个都试试吗?
  • 是的,我尝试过并且几乎没有发现任何差异,这就是为什么我要问,从长远来看,是否会出现问题,因为我正在开发一个网络应用程序

标签: sql-server codepages


【解决方案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 相同,因此如果实际的列排序代码页是不同的代码页,您可能会遇到问题。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2021-11-04
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      • 2010-12-14
      • 2016-03-29
      • 2018-05-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多