2

尝试使用 Delphi 2010 和 TADOConnection 将带有 Unicode 字符的值插入 MySQL 数据库,但没有成功。

与 ODBC 连接

Provider=MSDASQL.1;Persist Security Info=False;Data Source=mysrc;Initial Catalog=mydb

SQL 命令:

INSERT INTO myTable (aCol) VALUES('Russian: русский язык')

尝试直接插入它

TADOConnection.Execute(SQL)

它只在数据库中以“俄语:?????????????”结尾

还尝试了这里建议的方法: http ://www.3delite.hu/Object%20Pascal%20Developer%20Resources/delphiunicodemysqltutorial.html

With TADOQuery do
   begin
   SQL.Clear;
   SQL.Add('INSERT INTO myTable (aCol) VALUES(:p));
   Parameters.ParamByName('p').DataType := ftWideString;
   Parameters.ParamByName('p').Value := 'Russian: русский язык';
   ExecSQL;
end;

仅当我在设计时添加参数时,在代码中进行此操作对我来说根本不起作用,但是在数据库中仍然是相同的结果,并且到处都是问号。

4

2 回答 2

2

TADOConnection 似乎不支持 Unicode,至少我无法让它工作。

如果我改为使用 dbExpress TSQLConnection 和 TSQLQuery 插入数据库,它会按预期工作。但我必须使用参数而不是直接使用 INSERT 命令

                with qTarget.Params.ParamByName('p' + IntToStr(i)) do
                begin
                    DataType    := ftWideString;
                    Value           := Fields[i].AsWideString;
                end;
                qTarget.ExecSQL;
于 2010-10-06T11:13:00.220 回答
0

我相信这个 PHP 脚本SET NAMES utf8首先执行一个查询

于 2010-10-05T15:16:32.473 回答