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

CodeIgniter连接sqlsrv报Unable to set client connection character set: utf8如何解决

问题根源

该报错由SQL Server与MySQL的字符集命名规则差异导致:你使用sqlsrv驱动连接SQL Server数据库,但配置中填写的utf8、utf8_general_ci都是MySQL的字符集/排序规则命名,SQL Server无法识别。

解决方案

  • 修改数据库配置的字符集参数
    将数据库配置文件中的对应配置修改为:
'char_set' => 'UTF-8',
'dbcollat' => '',

如果配置不生效,可尝试将char_set替换为SQLSRV_ENC_UTF8。dbcollat可以留空,若需指定请填写SQL Server对应的排序规则(和实际数据库的排序规则保持一致,例如Chinese_PRC_CI_AS),不要使用MySQL的utf8_general_ci。

  • 补充DSN配置(上一步未生效时使用)
    你可以直接在DSN中指定连接参数和字符集,示例配置如下:
$db['default'] = array(
	'DSN' => 'sqlsrv:Server=你的数据库地址;Database=你的数据库名;CharacterSet=UTF-8',
	'hostname' => '',
	'username' => '你的数据库用户名',
	'password' => '你的数据库密码',
	'database' => '',
	'dbdriver' => 'sqlsrv',
	'dbprefix' => '',
	'pconnect' => false,
	'db_debug' => false,
	'cache_on' => false,
	'cachedir' => '',
	'char_set' => 'UTF-8',
	'dbcollat' => '',
	'swap_pre' => '',
	'encrypt' => false,
	'compress' => false,
	'stricton' => false,
	'failover' => array(),
	'save_queries' => TRUE
);
  • 检查扩展版本
    确认服务器安装的sqlsrv、pdo_sqlsrv扩展为最新稳定版,旧版本扩展存在UTF-8字符集兼容问题,可能触发相同报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:24:03