一、php连接sql sever 2005 中文编码转换问题。

  这个问题是近期做Yii项目遇到的,而且php项目中用sql server做数据库,就是一个很坑的事,但没办法啊,客户是大爷,得听他的。(随便吐槽一下),回归正题。

  解决中文数据插入sql server 数据库乱码问题,我想到了三种方法,具体的介绍如下:

    1、直接将执行的sql语句进行编码。由UTF-8编码转成GBK编码。

$sql = 'INSERT INTO '.$params['table'].'('.$params['field'].') '.$params['value'];
$sql = iconv('utf-8', 'gbk', $sql);//将sql语句转码 /**
*
*以上代码还没有拼接数据,所以我们还得把数据进行转码
*/
$binds = iconv('utf-8', 'gbk', $binds); /**
*
*执行sql语句
*/ Yii::app()->db->createCommand($sql)->bindValues($binds)->execute();

  2、把表单数据打包成数组,进行编码转换

 public function changeIconv(array $data){
$arr = array();
foreach($data as $key=>$val){
$arr[$key] = iconv('utf-8', 'gbk', $val);
}
return $arr;

  3、直接在获取表单数据时就进行编码转换

 /**
* [RQP 获取参数值]
* @param [type] $params [参数名]
* @param string $default [默认值]
* @param boolean $isIconv [是否转码 false 默认不转码]
*/
protected function RQP($params, $default = '', $isIconv = false) {
if ($isIconv) {
$data = Yii::app()->request->getParam($params, $default);
$data = iconv('utf-8', 'gbk', $data);
return $data;
}
return Yii::app()->request->getParam($params,$default);
}
/************获取参数*******************/
private function getParams(){
$user = $this->RQP('username', '', true);
}

个人喜欢用第三种,只要封装好之后,不管那一个数据添加功能都可以用

 

随机推荐

  1. 如何退出 Vim

    点击 Esc 键,; Vim 进入命令模式.然后输入: :q  退出(这是 :quit 的缩写) :q! 不保存退出(这是  :quit! 的缩写) :wq 写入文件并退出:(这是 :writequi ...

  2. php 函数形参前面加上&

    <?php function test(&$a){ $a=$a+100; } $b=1; echo $b;//输出1 test($b);//这里$b传递给函数的其实是$b的变量内容所处的 ...

  3. 页面加载的时候自动的执行js代码

    <script> window.onload=MyAutoRun; function MyAutoRun(){ alert("函数自动执行哦!"); } </sc ...

  4. 1.如何安装maven

    [确认]在CMD命令行中输入echo %JAVA_HOME%,查看JAVA_HOME是否配置.在CMD命令行中输入java -v,查看jdk是否正确安装.   [下载]从http://maven.ap ...

  5. (转载)jConsole,jvisualvm和jmap使用

    原文链接:http://my.oschina.net/freegarden/blog/286372 摘要 Oracle JVM自带了一些工具,观察java程序的运行,用于排错调优.正文将会对 jCon ...

  6. 谈谈webpack 的优势

    其优势主要可以归类为如下几个: 1. webpack 是以 commonJS 的形式来书写脚本滴,但对 AMD/CMD 的支持也很全面,方便旧项目进行代码迁移. 2. 能被模块化的不仅仅是 JS 了. ...

  7. 微信小程序的登陆流程详解

    由于小程序的登陆和登陆状态维护流程比较复杂,需要客户端和服务器的数次交互以及服务器端的相应处理,很多同学都觉得比较麻烦,所以特别写下这篇博客为大家梳理一下微信的登陆流程,同时加深对微信小程序与登陆状态 ...

  8. MS SQL Server Management Studio中提示不允许保长度出现不允许保存更改。您所做的更改要求删除并重新创建以下表

    在SQL Server Management Studio中直接修改正在连接的表结构会出现改不了的情况,如下图 解决方法:工具-选项-设计器--阻止保存要求重新创建表的更改,去掉对勾--确定即可

  9. java基础07 多线程

    在学习操作系统时,我们会学习进程和线程,那么进程和线程又是什么东西呢? 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程(thread) ...

  10. JMeter Http请求POST提交token失败,取样器结果Response Code 415

    Jmeter脚本,http请求以post方式提交token,执行脚本在察看结果中显示失败,取样器结果响应状态Response Code 415,如图: