Seite 1 von 1

ANSI oder OEM?

Verfasst: Mo, 15. Jul 2019 8:24
von Klaus Schuster
Moin Leute,

gibt es eine Möglichkeit sicher festzustellen ob einen Zeichenkette ANSI oder OEM Zeichen enthält? Derzeit behelfe ich mir damit:

Code: Alles auswählen

   LOCAL lAnsi    := FALSE
   LOCAL nLaenge  := 0
   LOCAL nZeichen := 0

   cText   := AllTrim( cText )
   nLaenge := Len( cText )

   FOR nZeichen := 1 TO nLaenge

      DO CASE
         CASE Asc( cText[ nZeichen ]) < 128
         CASE Chr( Asc( cText[ nZeichen ])) $ 'äöüÄÖÜß'

            lAnsi := TRUE
            EXIT

      ENDCASE

   NEXT
Funktioniert, deckt aber nicht alle Zeichen ab. Die Anwendung arbeitet aus Kompatibilität mit CHARSET_OEM.

Re: ANSI oder OEM?

Verfasst: Mo, 15. Jul 2019 10:10
von ramses
Hallo Klaus

so einfach ist das nicht.
Wenn du nicht anhand der Datenquelle unterscheiden kannst es kommen nun ANSI oder OEM Zeichen würde ich deine Abfrage um alle relevanten Zeichen erweitern.

Ich entscheide nach der Datenquelle zwischen UTF8 OEM ANSI und wandele die Strings entsprechend.

Re: ANSI oder OEM?

Verfasst: Di, 16. Jul 2019 8:32
von Klaus Schuster
Moin Carlo,

Danke, dass Du bestätigst, was ich bereits vermutet habe. Die Quellen sind leider unterschiedlich. Es bleibt nur die Funktion um alle eindeutig unterscheidbaren Zeichen zu erweitern, und somit eine Annäherung zu erreichen.