我有一個Delphi 7應用程序使用Paradox數據庫通過BDE,我已經轉換爲Delphi XE3和Firebird。 Paradox數據庫中有一個字符串字段,其中包含一個被認爲用於許可軟件的加密字符串。問題是,雖然在舊程序(D7/Paradox)中讀取該字符串的例程工作正常,但在新程序(XE3/Firebird)中,該例程發生錯誤。我通過調試發現的原因是從數據庫讀取後的字符串不同。我怎樣才能解決這個問題?Delphi Unicode字符串不匹配
舊Paradox數據庫字符串:
吳-DrLrDOtfâtD89D1'D'îu
新Firebird數據庫的字符串:
吳-DrLrDOtfâtD89D1'D '012
正如你在上面看到的e字符串在兩個數據庫中都是相同的。 。
在新的Delphi XE3程序,用UniDAC數據訪問組件時,我嘗試使用FieldByName(「字段名」)AsString得到字段的值,這是返回什麼:
NG- DrLrDOtf™D89D1'D'îu
您可以看到幾個字符是不同的。這在程序中檢查此字符串的例程中導致錯誤。你以前遇到過嗎?這個問題的可能原因是什麼?我可以採取哪些措施來解決這個問題。
注1:我轉換的悖論數據庫火鳥與我在Delphi寫一個轉換器(有關該轉換器的實際代碼,請參見:http://goo.gl/6xu2ST)
注2:我已在數據庫DEFAULT CHARACTER創建SET UTF8和UniDAC連接組件(TUniConnection)已將SpecificOptions CharSet設置爲'UTF8'。
您使用的是Firebird的哪個版本? – Sam