我有一个带有 COLLATION SQL_Latin_General_CP1_CI_AS
的 SQL Server 2005 数据库,我想通过 ADO 从 Delphi XE 运行查询。 SQL Server 中的数据是希腊语和拉丁语字符。但在 Delphi 中我得到不可读的字符串。我如何使用 Delphi XE 解决这个问题?
最佳答案
既然您说数据库中既有希腊字符也有拉丁字符,我猜您已经在数据库中使用nvarchar
。
在 Delphi 中,您应该使用 TWideStringField对于 nvarchar
字段。 TStringField用于varchar
(ansiststring)。
Field1 包含“γειά σου”
StringField := ADODataSet1.FieldByName('Field1') as TStringField;
ShowMessage(StringField.Value);
ShowMessage 显示“?e??s??”
这很好用
WideStringField := ADODataSet1.FieldByName('Field1') as TWideStringField;
ShowMessage(WideStringField.Value);
编辑 1
如果数据库中有 varchar
字段,则应使用 TStringField
并且需要确保“非 Unicode 程序的语言”为 Greek(Greece)
。
“控制面板 - 区域和语言 - 管理 - 更改系统区域设置...”
关于sql-server-2005 - 在 Delphi XE 中读取 SQL Server 字段文本值并同时进行字符转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5351201/