近日,因爲業務須要導出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,進行導出操做,結果亂碼問題解決。開發