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

Symfony配置更新后仍报utf8编码不支持错误(MSSQL+sqlsrv)

问题排查与解决方案

核心原因

错误提示SQLSTATE [IMSSP, -48]: The encoding 'utf8' is not a supported encoding for the CharacterSet connection option表明,应用仍在尝试将utf8作为数据库连接的字符集,而你在doctrine.yaml中配置的charset: 'cp1254'并未生效,大概率是被环境变量中的数据库URL参数覆盖了。

具体解决步骤

  • 检查并修正DATABASE_URL参数
    打开项目根目录下的.env或.env.local文件,查看DATABASE_URL是否包含charset=utf8的参数。例如类似:

    DATABASE_URL="sqlsrv://username:password@host:port/db_name?charset=utf8"
    

    若存在该参数,将其替换为charset=CP1254,或者直接删除该参数,让doctrine.yaml中的配置生效。

  • 统一字符集配置的大小写
    sqlsrv驱动对字符集名称的大小写有严格要求,将doctrine.yaml中的charset: 'cp1254'修改为charset: 'CP1254',避免因大小写不匹配导致驱动无法识别。

  • 清除Symfony缓存
    修改配置后,执行以下命令清除缓存,确保新配置生效:

    # 生产环境
    php bin/console cache:clear --env=prod
    # 开发环境
    php bin/console cache:clear --env=dev
    
  • 验证实际连接参数
    可以在控制器或自定义命令中添加临时代码,确认数据库连接使用的字符集:

    $connection = $this->getDoctrine()->getConnection();
    var_dump($connection->getParams()['charset']);
    exit;
    

    执行后查看输出,确认字符集是否为你配置的CP1254。

额外建议

如果你的MSSQL 2017数据库支持UTF-8编码,更推荐使用UTF-8作为连接字符集(注意是带连字符的格式),此时只需将配置中的CP1254替换为UTF-8即可,能更好地兼容多语言场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 12:47:41