Moin Moin zusammen,
ich stehe aktuell mal wieder vor dem Problem der deutschen Sprache
Aktuell bin ich etwas am verzweifeln, denn egal wie ich es mache, es ist immer das falsche Ergebnis.
Hier mal meine Funktion:
Spoiler anzeigen
Folgendes Szenario:
Ich möchte 2 verschiedene Schnittstellen abfangen, grundsätzlich sollten beide die gleiche "Sprache" sprechen, tun sie leider nicht.
Anbei mal 2 Screenshots mit der Encode Analyse
Laut Notepad++ ist die Datei die funktioniert in UTF-8, die die nicht geht soll angeblich ANSI sein.
Im normalen "Editor" sind beide Dateien ANSI und laut den Screenshots sind beide Dateien UTF-8
Kann mir hier vielleicht jemand bei helfen?
Grüße SaMsOn
ich stehe aktuell mal wieder vor dem Problem der deutschen Sprache
Aktuell bin ich etwas am verzweifeln, denn egal wie ich es mache, es ist immer das falsche Ergebnis.
Hier mal meine Funktion:
VB.NET-Quellcode
- Private Function load_gdt() As String
- If File.Exists(Path.Combine(My.Settings.gdt_pfad, My.Settings.gdt_datei)) Then
- System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance)
- Dim objReader As New StreamReader(Path.Combine(My.Settings.gdt_pfad, My.Settings.gdt_datei), System.Text.UTF8Encoding.Default)
- 'Dim objReader As New StreamReader(Path.Combine(My.Settings.gdt_pfad, My.Settings.gdt_datei), Encoding.GetEncoding("CP852"))
- 'Dim objReader As New StreamReader(Path.Combine(My.Settings.gdt_pfad, My.Settings.gdt_datei), System.Text.Encoding.GetEncoding(1252))
- Dim sLine As String = ""
- Dim arrText As New ArrayList()
- Do
- sLine = objReader.ReadLine()
- If Not sLine Is Nothing Then
- arrText.Add(sLine)
- End If
- Loop Until sLine Is Nothing
- objReader.Close()
- For Each sLine In arrText
- Try
- 'PatID
- If sLine.Remove(0, 3).Remove(4, sLine.Length - 7).Contains("3000") Then
- tb_patid.Text = sLine.Remove(0, 7)
- End If
- 'Vorname
- If sLine.Remove(0, 3).Remove(4, sLine.Length - 7).Contains("3102") Then
- tb_vorname.Text = sLine.Remove(0, 7)
- End If
- 'Nachname
- If sLine.Remove(0, 3).Remove(4, sLine.Length - 7).Contains("3101") Then
- tb_nachname.Text = sLine.Remove(0, 7)
- End If
- 'Geburtsdatum
- If sLine.Remove(0, 3).Remove(4, sLine.Length - 7).Contains("3103") Then
- tb_gebdatum.Text = sLine.Remove(0, 7)
- End If
- 'PLZ / Ort
- If sLine.Remove(0, 3).Remove(4, sLine.Length - 7).Contains("3106") Then
- Dim plz As String = sLine.Remove(0, 7)
- Dim ort As String = sLine.Remove(0, 13)
- plz = plz.Remove(5)
- tb_plz.Text = plz
- tb_ort.Text = ort
- End If
- 'strasse
- If sLine.Remove(0, 3).Remove(4, sLine.Length - 7).Contains("3107") Then
- tb_strasse.Text = sLine.Remove(0, 7)
- End If
- 'Telefon
- Dim vorwahlen4() As String = {"0160", "0162", "0163", "0170", "0171", "0172", "0173", "0174", "0175", "0176", "0177", "0178", "0179"}
- Dim vorwahlen5() As String = {"01511", "01512", "01514", "01515", "01516", "01517", "01520", "01521", "01523", "01525", "01529", "01570", "01573", "01575", "01577", "01578", "01579", "01590"}
- Dim vorwahlen6() As String = {"015566", "015630", "015678", "015888"}
- If sLine.Remove(0, 3).Remove(4, sLine.Length - 7).Contains("3150") Then
- If vorwahlen4.Any(Function(b) sLine.Remove(0, 7).StartsWith(b)) Then
- tb_mobil.Text = sLine.Remove(0, 7).Replace(" ", "").Replace("/", "").Replace("-", "")
- Else
- tb_telefon.Text = sLine.Remove(0, 7).Replace(" ", "").Replace("/", "").Replace("-", "")
- End If
- If vorwahlen5.Any(Function(b) sLine.Remove(0, 7).StartsWith(b)) Then
- tb_mobil.Text = sLine.Remove(0, 7).Replace(" ", "").Replace("/", "").Replace("-", "")
- Else
- tb_telefon.Text = sLine.Remove(0, 7).Replace(" ", "").Replace("/", "").Replace("-", "")
- End If
- If vorwahlen6.Any(Function(b) sLine.Remove(0, 7).StartsWith(b)) Then
- tb_mobil.Text = sLine.Remove(0, 7).Replace(" ", "").Replace("/", "").Replace("-", "")
- Else
- tb_telefon.Text = sLine.Remove(0, 7).Replace(" ", "").Replace("/", "").Replace("-", "")
- End If
- End If
- If sLine.Remove(0, 3).Remove(4, sLine.Length - 7).Contains("3456") Then
- tb_email.Text = sLine.Remove(0, 7)
- End If
- Catch ex As Exception
- End Try
- Next
- If My.Settings.gdt_autodel = True Then
- Try
- File.Delete(Path.Combine(My.Settings.gdt_pfad, My.Settings.gdt_datei))
- Catch
- MsgBox("Kann die GDT-Datei nicht löschen!" & Path.Combine(My.Settings.gdt_pfad, My.Settings.gdt_datei))
- End Try
- End If
- Else
- lbl_gdt_not_found.Visible = True
- End If
- End Function
Folgendes Szenario:
Ich möchte 2 verschiedene Schnittstellen abfangen, grundsätzlich sollten beide die gleiche "Sprache" sprechen, tun sie leider nicht.
Anbei mal 2 Screenshots mit der Encode Analyse
Laut Notepad++ ist die Datei die funktioniert in UTF-8, die die nicht geht soll angeblich ANSI sein.
Im normalen "Editor" sind beide Dateien ANSI und laut den Screenshots sind beide Dateien UTF-8
Kann mir hier vielleicht jemand bei helfen?
Grüße SaMsOn
Nein! Doch! OHH!