Seite 1 von 2

Umwandlung und Vergleich von deutschen Sonderzeichen

Verfasst: 05.06.2015 11:13
von dysti
Hey, irgendwie stehe ich total auf´n Schlauch.
Möchte gerne aus einem String die Steuerzeichen austauschen.
Wenn ich ein Sonderzeichen einer Variable zuordne und ausgebe dann erscheint nur "A?" anstatt " ß".
Gebe ich es direkt aus, wird das Zeichen richtig dargestellt.
Wie kann ich die Zeichen vergleichen in der Form if Findstring(Quellstring,"ß")
Das Problem sieht man erst, wenn man den untenstehenden Code in PB hineinkopiert.

Code: Alles auswählen

  eszet.s=" ß"
  ue.s=" ü"
  oe.s=" ö"
  ae.s=" ä"

  UE.s=" Ü"
  OE.s=" Ö"
  AE.s=" Ä"

  Debug " ü"
  Debug ue

  ;- ß - Ü - ü - Ö - ö - Ä - ä
 
 Debug Asc(" ß")
 Debug Asc(" Ü")
 Debug Asc(" ü")
 Debug Asc(" Ö")
 Debug Asc(" ö")
 Debug Asc(" Ä")
 Debug Asc(" ä")
 
 Debug " ß" + " - " + eszet
 Debug " Ü" + " - " + UE
 Debug " ü" + " - " + ue
 Debug " Ö" + " - " + OE
 Debug " ö" + " - " + oe
 Debug " Ä" + " - " + AE
 Debug " ä" + " - " + ae
 
 Debug "Anrede,Vorname,Nachname,E-Mail-Adresse,E-Mail 2: Adresse,Straße (privat),Postleitzahl (privat),Ort (privat),Bundesland (privat),Land (privat),Telefon (privat),Telefon privat 2,Mobiltelefon,Fax (privat),UM-Nr.,Webseite (privat),Titel,Position,Firma,E-Mail 3: Adresse,Webseite (geschäftlich),Straße (geschäftlich),Postleitzahl (geschäftlich),Ort (geschäftlich),Bundesland (geschäftlich),Land (geschäftlich),Telefon (geschäftlich),Telefon geschäftlich 2,Mobiltelefon 2,Fax (geschäftlich),UM-Nr. (geschäftlich)"

 quellstring.s="Anrede,Vorname,Nachname,E-Mail-Adresse,E-Mail 2: Adresse,Straße (privat),Postleitzahl (privat),Ort (privat),Bundesland (privat),Land (privat),Telefon (privat),Telefon privat 2,Mobiltelefon,Fax (privat),UM-Nr.,Webseite (privat),Titel,Position,Firma,E-Mail 3: Adresse,Webseite (geschäftlich),Straße (geschäftlich),Postleitzahl (geschäftlich),Ort (geschäftlich),Bundesland (geschäftlich),Land (geschäftlich),Telefon (geschäftlich),Telefon geschäftlich 2,Mobiltelefon 2,Fax (geschäftlich),UM-Nr. (geschäftlich)"
 
 Debug FindString(quellstring,"ß")
 Debug FindString(quellstring,"ß",65)
 
 Debug FindString(quellstring,eszet)
 Debug FindString(quellstring,eszet,65)

Re: Umwandlung und Vergleich von deutschen Sonderzeichen

Verfasst: 05.06.2015 11:17
von RSBasic
Wo bekommst du diese Zeichenketten her? Ist es nicht sinnvoller, den Zeichensatz in der Quelle anzupassen, damit die Sonderzeichen/Umlaute korrekt zurückgegeben werden, so dass du diesen Workaround erst gar nicht machen musst?

PS: Du kannst unter Datei > Datei-Format festlegen, ob Reintext oder UTF8. Ansonsten kannst du von den einzelnen Zeichen den Characterwert ermitteln und mit Chr(CharValue) arbeiten.

Re: Umwandlung und Vergleich von deutschen Sonderzeichen

Verfasst: 05.06.2015 11:41
von dysti
Ist es nicht sinnvoller, den Zeichensatz in der Quelle anzupassen
Geht leider nicht. Ich muß ihn so verarbeiten
Ansonsten kannst du von den einzelnen Zeichen den Characterwert ermitteln und mit Chr(CharValue) arbeiten.
Den Characterwert ermitteln habe ich probiert wenn du ASC() meinst. Hilft auch nicht weiter.
Chr(CharValue) arbeiten
Genau das möchte ich erreichen.

Komme trotz deines Hinweises auch nicht weiter. :oops:

Re: Umwandlung und Vergleich von deutschen Sonderzeichen

Verfasst: 05.06.2015 11:58
von RSBasic
Versuchs mal damit: http://slayeroffice.com/tools/ascii/

Wobei folgender Code bei mir funktioniert:

Code: Alles auswählen

Debug ReplaceString("Straße", "ß", "ß")
\\Edit:
Die beste Lösung findest du unten, siehe Code von matbal.

Re: Umwandlung und Vergleich von deutschen Sonderzeichen

Verfasst: 05.06.2015 12:05
von HeX0R
Wo kommen die Texte denn her?
Das sieht doch nach UTF-8 aus, da muss man doch nichts von Hand ersetzen?!

Re: Umwandlung und Vergleich von deutschen Sonderzeichen

Verfasst: 05.06.2015 12:08
von matbal
Dein Text sieht aus, als hättest du UTF8 gespeicherten Text als ASCII eingelesen.
Das ließe sich auch im nachhinein rückgängig machen, indem du ihn als ASCII ließt und als UTF schreibst.

Code: Alles auswählen

Text$ = "Anrede,Vorname,Nachname,E-Mail-Adresse,E-Mail 2: Adresse,Straße (privat),Postleitzahl (privat),Ort (privat),Bundesland (privat),Land (privat),Telefon (privat),Telefon privat 2,Mobiltelefon,Fax (privat),UM-Nr.,Webseite (privat),Titel,Position,Firma,E-Mail 3: Adresse,Webseite (geschäftlich),Straße (geschäftlich),Postleitzahl (geschäftlich),Ort (geschäftlich),Bundesland (geschäftlich),Land (geschäftlich),Telefon (geschäftlich),Telefon geschäftlich 2,Mobiltelefon 2,Fax (geschäftlich),UM-Nr. (geschäftlich)"

*buf = AllocateMemory(StringByteLength(Text$, #PB_Ascii))

PokeS(*buf, Text$, -1, #PB_Ascii)   ; als ASCII in den Buffer schreiben
Text$ = PeekS(*buf, -1, #PB_UTF8)   ; als UTF8 wieder auslesen

FreeMemory(*buf)

Debug Text$

Re: Umwandlung und Vergleich von deutschen Sonderzeichen

Verfasst: 05.06.2015 12:23
von dysti
@matbal, das scheint die einfachste Lösung zu sein.
Werde berichten, ob es so geht.
Es handelt sich, unschwer zuerkennen, um eine CSV-Datei.
Obiger ist der Steuersatz.

Re: Umwandlung und Vergleich von deutschen Sonderzeichen

Verfasst: 05.06.2015 13:11
von Josh
Seit wann mach PB einen Unterschied zwischen Variablen mit Namen ue und UE

Re: Umwandlung und Vergleich von deutschen Sonderzeichen

Verfasst: 05.06.2015 13:14
von matbal
dysti hat geschrieben: Es handelt sich, unschwer zuerkennen, um eine CSV-Datei.
Aber dann kannst du doch die Zeilen gleich als UTF8 einlesen:

Code: Alles auswählen

Text$ = ReadString(1, #PB_UTF8)

Re: Umwandlung und Vergleich von deutschen Sonderzeichen

Verfasst: 05.06.2015 13:35
von HeX0R
Hier fehlt übrigens noch ein Byte:

Code: Alles auswählen

*buf = AllocateMemory(StringByteLength(Text$, #PB_Ascii))
Also:

Code: Alles auswählen

*buf = AllocateMemory(StringByteLength(Text$, #PB_Ascii) + 1)