Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 确定SSIS赢得的Unicode字符';t形手柄_Sql_Sql Server_Unicode_Ssis_Ascii - Fatal编程技术网

Sql 确定SSIS赢得的Unicode字符';t形手柄

Sql 确定SSIS赢得的Unicode字符';t形手柄,sql,sql-server,unicode,ssis,ascii,Sql,Sql Server,Unicode,Ssis,Ascii,我正在使用一个SSIS包,该包从SQL Server获取数据并创建文本文件以发送给供应商。目前,正在使用ANSI 1252对文件进行编码,平面文件连接管理器上未选中Unicode复选框 程序包遇到此符号时失败:♥ 这使我相信,如果该步骤试图写出任何非ascii字符,它将失败。然而,它将成功地处理“ş”,将其转换为标准的“s”。就我们的目的而言,这种行为是伟大的,如果它做了类似于心脏符号的事情,就不会有任何问题。我正试图避免发送Unicode文件,因为该文件已经非常大,并且不希望将其大小加倍 我要

我正在使用一个SSIS包,该包从SQL Server获取数据并创建文本文件以发送给供应商。目前,正在使用ANSI 1252对文件进行编码,平面文件连接管理器上未选中Unicode复选框

程序包遇到此符号时失败:♥

这使我相信,如果该步骤试图写出任何非ascii字符,它将失败。然而,它将成功地处理“ş”,将其转换为标准的“s”。就我们的目的而言,这种行为是伟大的,如果它做了类似于心脏符号的事情,就不会有任何问题。我正试图避免发送Unicode文件,因为该文件已经非常大,并且不希望将其大小加倍

我要寻找的是SSIS不会为我自动转换的unicode字符范围。然后我需要做的是替换原始SQL语句,以清除这些字符,如♥.

我们从
REPLACE(NAME,SUBSTRING(NAME,PATINDEX('%[^-ÿ]]',NAME COLLATE Latin1_General_BIN2),1),“”)开始,
,但这会将“ş”替换为空格,我们试图避免使用空格,因为SSIS处理“ş”很好


谢谢你阅读这个问题

您将获得Windows的“最佳适应回退”编码。它转换的确切字符没有正式的文档记录,其行为因语言环境而异。在许多情况下,许多替换是不合适的,甚至可能存在安全问题。这几乎总是最好避免的

我正试图避免发送Unicode文件,因为该文件已经非常大,并且不希望将其大小加倍


UTF-16LE(微软工具称之为“Unicode”)的大小可能是ASCII的两倍,但为什么不使用另一个UTF,最明显的是UTF-8呢?

您得到的是Windows的“最佳匹配回退”编码。它转换的确切字符没有正式的文档记录,其行为因语言环境而异。在许多情况下,许多替换是不合适的,甚至可能存在安全问题。这几乎总是最好避免的

我正试图避免发送Unicode文件,因为该文件已经非常大,并且不希望将其大小加倍


UTF-16LE(Microsoft工具称之为“Unicode”)的大小可能是ASCII的两倍,但为什么不使用另一个UTF,最明显的是UTF-8?

如何将数据类型更改为ANSI?据我所知,SSIS不进行隐式转换。您是否正在数据库数据源和文件数据源之间的某个位置转换数据类型?我有一个OLE DB源,它查询一个包含我正在处理的nvarchar列的表。我没有使用任何数据转换任务,它实际上是OLEDB到平面文件的直接转换。数据流看起来像一个查询、一些操作,然后写入平面文件。源数据在sql server中是unicode,它作为wstr(?)进入管道。您是在数据流中显式转换为str(1252),还是在写入文件时让转换隐式进行?数据作为DT_wstr进入平面文件目标,我没有做任何显式转换。可能有一种方法是尝试使用数据转换任务对其进行转换,并将失败的记录发送到一个单独的Unicode文件中……这可能是我最初解决问题的方法。然后,您可以添加对不同错误条件的处理。我很惊讶,所有的行都没有因为数据类型不匹配而失败。您如何将数据类型更改为ANSI?据我所知,SSIS不进行隐式转换。您是否正在数据库数据源和文件数据源之间的某个位置转换数据类型?我有一个OLE DB源,它查询一个包含我正在处理的nvarchar列的表。我没有使用任何数据转换任务,它实际上是OLEDB到平面文件的直接转换。数据流看起来像一个查询、一些操作,然后写入平面文件。源数据在sql server中是unicode,它作为wstr(?)进入管道。您是在数据流中显式转换为str(1252),还是在写入文件时让转换隐式进行?数据作为DT_wstr进入平面文件目标,我没有做任何显式转换。可能有一种方法是尝试使用数据转换任务对其进行转换,并将失败的记录发送到一个单独的Unicode文件中……这可能是我最初解决问题的方法。然后,您可以添加对不同错误条件的处理。我很惊讶,所有的行都没有因为数据类型不匹配而失败。我错误地认为,将其标记为“Unicode”是使用UTF-8而不是UTF-16LE,这要感谢这些优秀的信息。是的,不幸的是,“Unicode”的广泛使用在Windows世界中表示UTF-16LE是非常容易误导的。我错误地认为,将其标记为“Unicode”是使用UTF-8而不是UTF-16LE,这要感谢提供了非常好的信息。是的,不幸的是,在Windows世界中广泛使用“Unicode”表示UTF-16LE是非常容易误导的。