700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > freetds php mssql 中文乱码 PHP linux下用freetds查询mssql数据库 uniqueidentifier类型字段问题...

freetds php mssql 中文乱码 PHP linux下用freetds查询mssql数据库 uniqueidentifier类型字段问题...

时间:2021-04-12 09:35:10

相关推荐

freetds php mssql 中文乱码 PHP linux下用freetds查询mssql数据库 uniqueidentifier类型字段问题...

实际用了pdo_dblib扩展

命令行连接测试:

注意字符集,否则会出现乱码

如果没有中文语言呢

可以通过网上下载安装中文语言包yumgroupinstallchinese-support

修改系统默认语言

Vi/etc/sysconfig/i18n(注意改好之后重启一下系统)

修改完中文乱码问题,接着要处理sql server的uniqueidentifier类型字段问题:

php查询到此字段时,得到的结果是二进制格式:

这时网上介绍可以是用bin2hex,或join('-', unpack('H8a/H4b/H4d/H4e/H*f', $id));但得到的结果与原始内容相比,某些端顺序不对

原始记录:EA98DE18-0479-4996-A36A-2442565EEF10

PHP得到数据:18DE98EA-7904-9649-A36A-2442565EEF10

通过设置,我直接得到string类型

Laravel框架为例,修改:vendor\illuminate\database\Connectors\Connector.php文件的createPdoConnection方法

protected function createPdoConnection($dsn, $username, $password, $options)

{

if (class_exists(PDOConnection::class) && ! $this->isPersistentConnection($options)) {

return new PDOConnection($dsn, $username, $password, $options);

}

$db = new PDO($dsn, $username, $password, $options);

if(strpos($dsn,"dblib:") !== false){

$db->setAttribute(PDO::DBLIB_ATTR_STRINGIFY_UNIQUEIDENTIFIER, true);

}

return $db;//new PDO($dsn, $username, $password, $options);

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。