deutschsprachige FoxPro User Group
Forum View
Home
  
  unicode- #23957 in section [742166]
Sec: (1) Allgemeines
Von: Ulf Neugebauer
An: Jürgen Wondzinski
Am/Um: 18.07.2019 23:09:08 gelesen

Hallo Woody,

das währ ja schön wenn es so währe!
Zum Importieren aus einer Excel Zelle nutze ich eine nahezu nicht dokumentierte Codepage.
#DEFINE CP_UTF8 65001

Wenn es Utf8 ist kannst du es in den Ascii Raum konvertieren!

Hilfsfunktion:
FUNCTION Buf2Word ( tcBuffer )
RETURN ASC( SUBSTR( tcBuffer ,1 ,1 )) + ASC( SUBSTR( tcBuffer ,2 ,1 )) * 256

Arbeitsfunktion:
FUNCTION Utf8ToAsc( tcUtf8String )
LOCAL lnLen AS Integer ,;
lcChar AS String ,;
lcText AS String ,;
lnAscx AS Integer

lcText = ""
lnLen = LEN( tcUtf8String )
IF lnLen = 0
RETURN lcText
ENDIF

FOR lnCount = 1 TO lnLen-1 STEP 2
lcChar = SUBSTR( tcUtf8String ,lnCount ,2 )
lnAscx = Buf2Word( lcChar )
IF lnAscx < 256
lcText = lcText + CHR( lnAscx )
ELSE
DO CASE
CASE lnAscx = 287
lcText = lcText + CHR( 240 )

CASE lnAscx = 305
lcText = lcText + CHR( 253 )

CASE lnAscx = 304
lcText = lcText + CHR( 221 )

CASE lnAscx = 350
lcText = lcText + CHR( 222 )

CASE lnAscx = 351
lcText = lcText + CHR( 254 )

* Latin Extended-B
CASE lnAscx = 536
lcText = lcText + CHR( 222 )

CASE lnAscx = 537
lcText = lcText + CHR( 254 )

* Sonderzeichen http://www.webmaster-seo.com/unicode/original/range/17/
CASE lnAscx = 8230
lcText = lcText + "..."

CASE lnAscx = 8217
lcText = lcText + "'"

CASE lnAscx = 8211
lcText = lcText + "-"

OTHERWISE
ACTIVATE SCREEN
? lnAscx
lcText = lcText + "?"

ENDCASE
ENDIF
ENDFOR

RETURN lcText

Das kann man leicht erweitern, man sieht es an Fragezeichen im Return, dann muss man schauen welchem Code es im Ascii Zeichensatz es entspricht.
Aus lnAscx = 8230 werden einfach "...", und das ist natürlich auch im deutschem so.

Wie du siehst habe ich mich intensiv damit beschäftigt, auch weil mein Chef einfach mal aus dem Google Übersetzer etwas kopiert und in vfp einfügt, und wenn dann ??? auftaucht kriegt der ne Kriese... na ja mein Problem.

Warum ich dennoch mit vfp unterwegs bin hängt mit er einfachen on the fly Instanziierung von Objekten zusammen.
Ich hätte auch gern telefoniert, aber das willst du ja nicht... Schade.
Wenn ich meine neue Internetpräsenz endlich hinbekomme werde ich die dll's usw. auch zur allgemeinen Verfügung stellen. Ich bin ja auch schon 16 Jahre mit dem Fuchs unterwegs.

nichts für ungut!
Beste Grüße
Ulf


Fox on The Run (The Sweet)



Ulf Neugebauer   13.07.2019 16:05
Jürgen Wondzinski  18.07.2019 10:58
Ulf Neugebauer  18.07.2019 16:30
Jürgen Wondzinski  18.07.2019 11:01
Ulf Neugebauer  18.07.2019 23:09
Jürgen Wondzinski  19.07.2019 21:23
  
zurück zum Forum