[VB2008] Split mit ° als Trennzeichen

Dark Ranger

Erfahrenes Mitglied
Hi

Ich bin gerade dabei ein SSIS Paket zu erstellen um damit Tabellen auf dem SQL Server mit Inhalten aus den Dateien zu füllen.
Die Dateien haben ° als Trennzeichen. Gebe ich dieses Trennzeichen nun aber bei Split an, passiert nichts. Wenn ich mir danach den String in einer MsgBox ausgeben lasse, dann steht dort kein ° sondern ein ?
Quellcode ist schwer zu zeigen, da es mit dem SSIS Paket verankert ist, aber gibt es vielleicht allgemeine Infos die mir weiterhelfen könnten?
 
Bitte keine Mehrfachpostings! Das nächste Mal einfach um Verschiebung bitten. *Anderer Beitrag wurde gelöscht*

Hast Du es schon mal mit einem anderen Trenner versucht ?
Kann es sein, dass die Zeichenkodierung nicht mitspielt ? UTF8 gegen ISO8859-1 ?

Trenner dürfen doch auch mehr als 1 Zeichen lang sein, nimm doch zB

mfg chmee
 
Ich kann am Trennzeichen leider nichts ändern, da die Dateien mir so vorgegeben sind.

Habe schon ein bisschen gebastelt in meinem Paket, hier die Stelle wo ich die einzelnen Zeilen auslese:
Code:
Dim nextLine As String
        Dim columns As String()
        nextLine = textReader.ReadLine
        Do While nextLine IsNot Nothing
            MsgBox("Vorher: " & nextLine)
            columns = nextLine.Split("°".ToCharArray)
            nextLine = ""
            For Each column As String In columns
                nextLine = nextLine & column & ", "
            Next column
            nextLine = Left(nextLine, Len(nextLine) - 2)
            MsgBox("Nachher: " & nextLine)
            With OutputBuffer
                .AddRow()
                .Spalte = nextLine
            End With
            nextLine = textReader.ReadLine
        Loop

Ich habe dort halt versucht, das ganze so umzubauen, dass die ganzen Werte mit Komma getrennt hintereinanderstehen, allerdings gibt "Vorher" Die Zeichenkette schon mit so einer Box aus, deswegen denke ich, dass wirklich die Codierung falsch ist.

Was kann ich da machen? Meine FlatFile Connection ist auf CodePage 1252 gestellt, oder soll ich versuchen den String umzukodieren?

Edit:
Wenn ich mal testweise * als Trennzeichen einsetze, dann funktioniert oben stehender Code auch, leider sind mir ja aber die Dateien so vorgegeben.
 
Zuletzt bearbeitet:
Was du auf jeden Fall versuchen solltest, ist das Ausgeben der einzelnen Zeichen als Zahl.
Also einfach mal
Code:
debug.print(nextLine)
for each ch as char in nextLine
  debug.print(asc(ch)) 'alternativ auch: ascw(ch)
next
Und dann mit dem Text vergleichen, welches ASCII-Zeichen an der Trennstelle steht. Das hilft vielleicht dabei rauszukriegen, welches Zeichen als Trenner (fälschlich) steht.
Ansonsten würde ich auch sagen, versuch mal den textReader auf UTF8 einzustellen und den Trenner nicht als ToCharArray, sondern vorher als Feld zu erstellen und nur zu übergeben.
 
Mhhh ich habe nichts gemacht, nur einmal die CodePage der FlatFile Connection auf 65001 gestellt, was aber keine Änderung mit sich gebracht hat.

Dann habe ich mir mal das Trennzeichen als Zahl ausgeben lassen so wie du es beschrieben hast, dabei kommt immer 63 raus.

Das komische ist allerdings, dass es auf einmal funktioniert o_O Aber es steht nicht mehr "°".toCharArray() sondern das ° ist ein Kästchen.
Das kann ich natürlich nicht so lassen, aber ich werde jetzt erstmal versuchen das ganze so in die Datenbank zu schreiben, vielleicht funktioniert es ja (gab vorher auch einen Fehler, irgendwas mit System.__COMObject kann nicht zu Klasse umgewandelt werde oder so)
 
Folgender Fehler tritt im Moment auf, wenn ich mich zur Datenbank verbinden will:

Code:
Das COM-Objekt des Typs "System.__ComObject" kann nicht in den Klassentyp "System.Data.SqlClient.SqlConnection" umgewandelt werden.

Folgender Code:
Code:
Private SQLConnMgr As IDTSConnectionManager100
      Private SQLConn As SqlConnection

    Public Overrides Sub AcquireConnections(ByVal Transaction As Object)
        MyBase.AcquireConnections(Transaction)
        SQLConnMgr = Me.Connections.ServerConnection
        SQLConn = CType(SQLConnMgr.AcquireConnection(Nothing), SqlConnection)
    End Sub

Was mache ich falsch?

Edit:
So habe ich es aus dem Technet übernommen

Edit2:
Das Problem oben hat sich gelöst, mache es nun über new SQLConnection(ConnectionString)

Allerdings bleibt das Trennzeichen Problem weiterhin bestehen, er zwar im moment alles trenn, aber bei jedem Sonderzeichen und zum Beispiel auch bei einem ß was er ja nicht soll -.-
Ich denke es ist wirklich ein Problem der Kodierung, allerdings kann ich das Trennzeichen und die Kodierung der Dateien nicht ändern. Ein Umstellen der Codepage der FlatFile Connection auf 65001 (UTF8) hat nicht geholfen. Nun ist die Frage wie löse ich das Problem?
 
Zuletzt bearbeitet:
Das Problem hat sich erledigt.

Code:
new StreamReader(Pfad, Encoding.Default)
und anstatt
Code:
Columns = NextLine.Split"°".ToCharArray())
habe ich folgendes benutzt
Code:
Columns = NextLine.Split(Chr(176))

Dadurch funktioniert es ohne Probleme. Jetzt ist nur noch die Performance das Problem aber da kann ich jetzt erstmal in Ruhe drüber nachdenken.

Deswegen hier ..::Erledigt::..

Edit:
Kennt sich vielleicht irgendwer näher mit SSIS aus?
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück