2016-06-02 5 views
0

カーソル情報をUTF-8を使用してエンコードされたテキストファイルにコピーする必要があります。VFP 5 COPY TOコマンド

私の現在のコマンドだった: -

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

デフォルトではテキストファイルがANSIに保存された、どのように私はそれをUTF-8に保存することができますか?

編集:私は、私はよく分からないVFP 5.

答えて

0

を使用しています、()

のStrConv(filetostr(ファイル名)、10)

+0

私は試みましたが、VFP 5はFILETOSTRを認識しません。これを達成するには別の方法が必要です。 – Dvann

+0

申し訳ありませんが、これは私がこれを行うために知っている唯一の方法です。誰かがあなたにさらなる情報を提供できることを願っています! – Joh

0

1.ConvertすべてのStrConvを使用してみてください文字メモUTF-8へのフィールド:

update table1 set field1=STRCONV(field1, 9) 

これは、すべての非ANSIのcharacteを変換し、 rsをUTF-8エンコーディングに変換します。

  1. COPY TOコマンドを使用してエクスポートします。
+0

ありがとう、私はこれが動作すると思うが、私はそれを試してhavent。私のデータはカーソルに保存されており、私は多くのフィールドを持っています。 STRCONVで1つずつ更新するのではなく、すべてのフィールドを更新するのに使うことができるより良い方法を共有してもいいですか? – Dvann

+0

たとえば、 'character'フィールドに' STRCONV() 'を実行して、ループ内のすべてのフィールドを反復します。または、_DBF Commander Pro_のようなバッチ変換ツールを使用します。 – Oleg

0

オレグの提案に展開するには、あなたは...

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 

更新YourTable & lcUpdFldsによって与えられたテーブル内のすべてのフィールドを循環

ONE updateコマンドを実行するように変更し、ALLヒットすることができます列対複数の更新プログラムを実行中...特にLARGERテーブルで