我正在使用SSIS包从SQL Server获取数据并创建文本文件以发送给供应商。目前,文件使用ANSI 1252进行编码,并且未在平面文件连接管理器上检查Unicode复选框。
遇到此符号时包裹失败:♥
这让我相信如果步骤试图写出任何非ascii字符,它就会失败。但是,它会成功处理:“ş”将其转换为标准“s”。出于我们的目的,这种行为很好,如果它做了类似心脏符号的事情,就没有问题。我试图避免发送一个Unicode文件,因为该文件已经非常大,并且其大小加倍是不可取的。
我正在寻找的是SSIS不会自动为我转换的unicode字符范围。那么我需要做的是替换原始的SQL语句,以清除像♥这样的字符。
我们从REPLACE(NAME, SUBSTRING(NAME, PATINDEX('%[^ -ÿ]%', NAME COLLATE Latin1_General_BIN2), 1), '')
开始,但是这将用一个空格替换“ş”,我们试图避免这个空间,因为SSIS处理“ş”就好了。
感谢您阅读此问题!
答案 0 :(得分:1)
你正在获得Windows的“最适合后备”编码。它转换的确切字符没有正式记录,并且行为因区域设置而异。许多替换在许多情况下都是不合适的,甚至可能存在安全问题。它几乎总是最好避免。 Background
我正在尝试避免发送一个Unicode文件,因为该文件已经非常大,并且其大小加倍是不可取的。
UTF-16LE(Microsoft工具称之为“Unicode”)的大小可能是ASCII的两倍,但为什么不是另一个UTF,最明显的是UTF-8?