我将尝试将DAT文件加载到SQL Server表中。该DAT文件的特定列在某一列中有一个“�”字符。我正在尝试使用派生列转换中的表达式替换此字符。
以下是表达式。
(DT_STR,1000,1252) REPLACE( [Comments] ,N'�','')
出现了错误,表达式无法得到求值。 有人能帮我吗? 非常感谢。
(DT_STR,1000,1252) REPLACE( [Comments] ,N'�','')
出现了错误,表达式无法得到求值。 有人能帮我吗? 非常感谢。
我认为你应该尝试两种方法:
如评论中所述,�
是在所选编码中替换无效字符的结果。
首先,请检查列数据类型是否为 DT_WSTR
而不是 DT_STR
**
此外,尝试将编码设置为 Unicode
或尝试使用编码检测工具,例如:
但我认为到目前为止还没有一个强大的编码检测应用程序或库支持所有编码
要更改扁平文件连接管理器的编码,您可以勾选Unicode复选框或从下拉列表中选择代码页:
如果您没有编码问题并且知道正确的文件编码,如果文件创建不正确,则这些�
字符没有意义且无法还原,您必须检查文件创建操作并检查数据源编码或排序规则与平面文件编码之间是否存在问题或差异。
或者您可以使用脚本组件或派生列来删除这些字符:
(DT_WSTR,1000)REPLACE([Comments] ,"�","")
*注意:在�
标记之前不要使用N
文字,也不要转换为DT_STR
,因为可能有其他无法转换的Unicode字符。
附加信息
U+FFFD REPLACEMENT CHARACTER
,这将使其免受您的替换调用影响。如果文件的编码不仅仅是错误的,则可能需要使用十六进制查看器更仔细地查看文件的字节。 - Jeroen Mostert