大哥们好, 我在使用DBGrid撷取MySQL的columns时, MySQL里皆用utf8编码, 但截出来后所有的中文都变成乱码(如图), 我用的是delphi 2009 DBE 的TDatabase, 请问这如何解决….底下是程序代码
unit Unit2;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, DBTables, Grids, DBGrids, StdCtrls, WideStrings, DBXMySql
  ;type
  TForm2 = class(TForm)
    Database1: TDatabase;
    Table1: TTable;
    DataSource1: TDataSource;
    Button1: TButton;
    DBGrid1: TDBGrid;
    Query1: TQuery;
    Query1type: TMemoField;
    Query1id: TMemoField;
    Query1filename: TMemoField;
    Query1size: TIntegerField;
    Query1time: TIntegerField;
    Query1description: TMemoField;
    Query1author: TMemoField;
    Query1ipnr: TMemoField;
    procedure Button1Click(Sender: TObject);
    procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form2: TForm2;implementation{$R *.dfm}procedure TForm2.Button1Click(Sender: TObject);
begin
    close();
end;procedure TForm2.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
  var
bmp: TBitmap;
OutRect: TRect;begin
 with DbGrid1 do
beginCanvas.FillRect(Rect);
OutRect := Rect;
InflateRect(OutRect, -2, -2);
if column.Field is TGraphicField then
begin
bmp := TBitmap.Create;
try
bmp.Assign(Column.Field);
Canvas.StretchDraw(OutRect, Bmp);
finally
bmp.Free;
end;
end
else if Column.Field is TMemoField then
begin
DrawText(Canvas.Handle, Pchar(Column.Field.AsString),
Length(Column.Field.AsString), OutRect, dt_WordBreak or dt_NoPrefix);
end
else
DrawText(Canvas.Handle, Pchar(Column.Field.DisplayText),
Length(Column.Field.DisplayText),
OutRect, dt_WordBreak or dt_NoPrefix);
end;end;end.