You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSIS数据转换丢失扩展ASCII:如何正确转换保留en dash?

解决DT_STR转换时保留En Dash的方法

问题根源是转换时代码页不匹配:Unicode转DT_STR(非Unicode字符串)时,若未指定正确的代码页,En Dash(U+2013)会被转成错误的字节序列,存入varchar后显示为乱码–(这是UTF-8字节被当作Windows-1252解析的结果)。

以下是具体修复步骤:

1. 确认数据库varchar的对应代码页

先查询目标数据库/表的排序规则(collation)对应的代码页:

  • 以SQL Server为例,执行以下语句:
    SELECT COLLATIONPROPERTY('你的数据库排序规则', 'CodePage')
    
    • 结果为1252,对应Windows-1252编码(原生支持En Dash)
    • 结果为65001,对应UTF-8编码(也支持En Dash)

2. 在数据转换组件中指定匹配的代码页

在SSIS的「数据转换」组件里,针对目标列做如下设置:

  • 将DataType设为string [DT_STR]
  • 在「Code Page」下拉框中,选择和数据库排序规则匹配的代码页:
    • 对应Windows-1252选1252 (ANSI - Latin I)
    • 对应UTF-8选65001 (UTF-8)

3. 验证转换效果

转换后,Unicode中的En Dash会被正确映射到对应编码的字节:

  • Windows-1252中En Dash对应字节0x96
  • UTF-8中En Dash对应字节序列0xE2 0x80 0x93
    存入varchar后,数据库会用对应编码解析字节,即可正常显示En Dash。

常见避坑点

  • 不要使用默认代码页(非1252/65001),否则En Dash会被替换为问号或乱码
  • 确保数据库排序规则支持En Dash:比如SQL_Latin1_General_CP1_CI_AS(代码页1)不支持,必须使用代码页1252或65001的排序规则

内容的提问来源于stack exchange,提问作者Gargoyle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 04:05:00