我正在为SSIS 2005脚本组件编写一段代码来从informix数据库中读取数据(数据库字符串存储为UTF8)。
此字符串的输出需要加载到文本流(DT_TEXT),使用代码页1252(ANSI - Latin I)进行编码。
这是我想要完成的一个简单示例(AllColumnsBuffer是脚本组件输出缓冲区,ColumnText是我正在加载的DT_TEXT字段的名称。)
Dim s As String = "Testing,1,2,3" & System.Text.RegularExpressions.Regex.Unescape("\u4EB5")
AllColumnsBuffer.AddRow()
AllColumnsBuffer.ColumnText.AddBlobData(encoding.GetEncoding(1252).GetBytes(s))
如果编码找到无法转换为1252的字符,我需要抛出一个错误。现在它似乎只是放入一个?如果源中的字符不存在。有没有办法验证目标代码页中是否存在该字符?
答案 0 :(得分:2)
您可以创建一个新编码,然后将EncoderFallback
属性设置为您自己的回退,或者如果异常对您来说足够好,那么您可以使用EncoderExceptionFallback
。你自己的后备可能(比方说)没有例外地优雅地失败,但设置一个标志告诉你它失败了。