Ich schreibe ein Stück Code für eine SSIS 2005-Skriptkomponente, um Daten aus einer Informix-Datenbank (in der die Datenbankzeichenfolgen als UTF8 gespeichert sind) zu lesen.
Die Ausgabe dieses Strings muss in einen Textstrom (DT_TEXT) geladen werden, der unter Verwendung der Codepage 1252 (ANSI - Lateinisch I) codiert ist.
Hier ist ein einfaches Beispiel dafür, was ich erreichen möchte (AllColumnsBuffer ist der Ausgabepuffer der Skriptkomponente, ColumnText ist der Name des DT_TEXT-Feldes, das ich lade).
Dim s As String = "Testing,1,2,3" & System.Text.RegularExpressions.Regex.Unescape("\u4EB5")
AllColumnsBuffer.AddRow()
AllColumnsBuffer.ColumnText.AddBlobData(encoding.GetEncoding(1252).GetBytes(s))
Ich muss einen Fehler werfen, wenn beim Encoding Zeichen gefunden werden, die nicht in 1252 konvertiert werden können. Es scheint, dass es derzeit einfach ein ? einfügt, wenn ein Zeichen in der Quelle nicht existiert. Gibt es eine Möglichkeit zu überprüfen, ob das Zeichen in der Zielsprachenseite existiert?