2016-06-02 10 views
0

Ich muss meine Cursor-Informationen in Textdatei kopieren, die mit UTF-8 codiert ist.VFP 5 COPY TO Befehl

Mein aktueller Befehl war: -

COPY TO (FILE NAME) DELIMITED WITH CHARACTER ";" 

Standardmäßig wurde die Textdatei in ANSI gespeichert, wie kann ich es in UTF-8 machen Speichern?

EDIT: Ich bin mit VFP 5.

Antwort

0

Ich bin nicht sicher, versuchen StrConv()

StrConv (filetostr (FILE NAME), 10)

+0

Ich habe versucht, aber VFP 5 erkennt FILETOSTR nicht. Ich brauche einen alternativen Weg, um dies zu erreichen. – Dvann

+0

Sorry, dies ist die einzige Möglichkeit, die ich kenne. Hoffe jemand kann dir weitere Informationen liefern! – Joh

0

1.Convert alle Zeichen und Memo Felder in UTF-8:

update table1 set field1=STRCONV(field1, 9) 

Dieser wandelt alle nicht-ANSI characte rs in UTF-8-Codierung.

  1. Exportieren Sie es mit Ihrem COPY TO Befehl.
+0

Danke, ich denke, das wird funktionieren, aber ich habe es nicht versucht. Meine Daten sind im Cursor gespeichert und ich habe viele Felder. Macht es Ihnen etwas aus, einen besseren Weg zu teilen, mit dem ich alle Felder mit STRCONV aktualisieren kann, anstatt sie einzeln zu aktualisieren? – Dvann

+0

Zum Beispiel Iterate alle Felder in einer Schleife, Ausführen von 'STRCONV()' auf 'Zeichen' Felder. Oder verwenden Sie ein Batch-Konvertierungstool wie _DBF Commander Pro_. – Oleg

0

Um auf Oleg Vorschlag zu erweitern, können Sie durch alle Felder in der angegebenen Tabelle durch ...

USE C:\SomePath\YourTable.dbf 
*/ Get list of all fields in the table's structure 
lnF = AFIELDS(laF, "YourTable") 
lcUpdFlds = "" 
*/ Prepare a field for allowing comma between multiple fields 
*/ but first time in is the "SET" command instead. 
lcNextFld = "set " 
FOR lnI = 1 TO lnF 
    */ Is it a character-based field 
    IF laF[ lnI, 2] = "C" OR laF[ lnI, 2] = "M" 
     lcFld = laF[ lnI, 1] 
     lcUpdFlds = lcUpdFlds + lcNextFld + lcFld + " = STRCONV(" + lcFld + ", 9) " 
     */ Any subsequent character based fields will have a COMMA 
     */ added between them. 
     lcNextFld = ", " 
    ENDIF 
ENDFOR 

Update Yourtable & lcUpdFlds

Geändert ONE Update-Befehl zu tun und treffen ALL Spalten vs laufen mehrere Updates ... Vor allem auf einer größeren Tabelle