delphi 2010 導出sql server 數據到DBF亂碼問題

    近日,因爲業務須要導出sql server 數據到DBF文件,要查詢多表記錄,並適當處理後生成導出DBF文件,系統使用delphi2010平臺開發。sql

    首先按要求在VFP裏建立DBF表,字段數有240個,做爲樣表,導出時取樣表經過文件流拷貝一個新表,並按要求規則命名,拷貝一份新表使用:編碼

 1 procedure copyfile(sfile,tfile:String);
 2 var
 3   f1,f2: tfilestream ;
 4 begin
 5   f1:=Tfilestream.Create(sfile,fmopenread);
 6   try
 7     f2:=Tfilestream.Create(tfile,fmopenwrite or fmcreate);
 8     try
 9       f2.CopyFrom(f1,f1.size);
10     finally
11       f2.Free;
12     end;
13   finally
14     f1.Free;
15   end;
16 end;

    接着查詢sql server 數據,使用delphi BDE Table,循環寫入數據到DBF文件,結果,其中有中文的字段爲亂碼。spa

    爲了解決亂碼問題,上網查了一些資料,也作了一些其餘操做,最終獲得解決。code

    產生亂碼後,曾嘗試把DBF文件字段數刪除了大部分,再導入,結果沒有亂碼,字段數128個之內沒亂碼,128個以上就會有亂碼。server

    又在delphi 7裏進行如此操做導出,結果沒有亂碼,因爲系統程序是delphi 2010開發的,仍是要解決在2010版裏,128個字段以上的導出記錄中文亂碼問題。blog

    使用Database Desktop修改DBF文件的語言編碼,經過Tools菜單Utilities子菜單的Restructure打開DBF文件,在Table Properties選Table Language,點Modify,在彈出的表語言選擇裏,有dBASE CHS cp936和dBASE CHS cp950選項,先選擇dBASE CHS cp936保存,進行導出,結果仍是亂碼,再選擇dBASE CHS cp950,進行導出操做,結果亂碼問題解決。開發

相關文章
相關標籤/搜索