You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Delphi 11.3向SQLite存特殊字符后DBMemo显示乱码,求排查

Delphi SQLite 特殊字符显示乱码问题解决

这是Unicode编码不匹配导致的问题:SQLite默认以UTF-8存储文本,但你的FireDAC连接设置或数据插入方式没正确处理Unicode编码,导致Delphi控件读取时出现乱码。

具体解决步骤:

  • 配置FireDAC连接的字符集
    在FDConnection的参数中添加CharacterSet=utf8mb4(或utf8,utf8mb4支持更完整的Unicode字符),确保连接SQLite时使用UTF-8编码交互:

    FDConnection.Params.Add('CharacterSet=utf8mb4');
    
  • 改用参数化查询插入数据
    不要直接将Unicode字符串硬编码到SQL语句中,参数化查询会自动处理编码转换,还能避免SQL注入风险:

    FDQry.SQL.Text := 'INSERT INTO Test (Var1, Var2) VALUES (:Var1, :Var2)';
    FDQry.ParamByName('Var1').AsInteger := 1;
    FDQry.ParamByName('Var2').AsString := '$£¥€';
    FDQry.ExecSQL;
    

    硬编码字符串时,Delphi可能会把Unicode字符串转成ANSI编码再传递,导致SQLite存储的编码错乱。

  • 确认表字段类型
    确保Test表的Var2字段类型为TEXT,SQLite的TEXT类型原生支持UTF-8存储,更适合Unicode文本。

  • 检查DBMemo控件设置
    确认DBMemo的Font.Charset属性设置为DEFAULT_CHARSET或UNICODE_CHARSET,保证控件能正确渲染Unicode字符。

内容的提问来源于stack exchange,提问作者Ruud Schmeitz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 11:37:03