一、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. [leetcode-523-Continuous Subarray Sum]

    Given a list of non-negative numbers and a target integer k, write a function to check if the array ...

  2. 【LeetCode】205. Isomorphic Strings

    题目: Given two strings s and t, determine if they are isomorphic. Two strings are isomorphic if the c ...

  3. Kotlin入门第四课:简单工厂模式

    Kotlin基础知识的学习,请参考之前的文章: Kotlin入门第一课:从对比Java开始 Kotlin入门第二课:集合操作 Kotlin入门第三课:数据类型 初次尝试用Kotlin实现Android ...

  4. easyui框架--基础篇(一)-->数据表格datagrid(php与mysql交互)

      前  言  php  easyui框架--本篇学习主要是 easyui中的datagrid(数据表格)框架. 本篇学习主要通过讲解一段代码加GIF图片学习datagrid(数据表格)中的一些常用属 ...

  5. Dagger2在Android开发中的应用

    世界是普遍联系的,任何事物和个体都直接或间接相互依赖,在时空长河中共同发展.在面向对象的世界中,更是如此,类与类之间的依赖,关联关系,模块(亦或是分层架构中的层)之间的耦合关系,都是我们在软件开发实践 ...

  6. axis1.4开发webservice服务端(快速入门)-基于jdk1.4

    写在前面: 现在有很多开发webservice的方法以及框架,什么cxf等,但是这些在你编写服务类的时候都要用到注解这个功能.如果现在的jdk是1.4的,那么就不能使用注解这个功能了.所以这里可以用到 ...

  7. web前段学习2016.6.6

    目前上网的方式:手机平板电脑移动端:智能手机.平板PC:电脑.笔记本运行在移动端的东西:APPios:object-candroid:javapc端的东西:桌面应用程序 c++ 我们上网的方式都是通过 ...

  8. VI修改文件

    找到路径   vi  文件名    i  添加或修改 esc   :  wq  保存退出     --------------------------------------------------- ...

  9. Android可更换布局的换肤方案

    换肤,顾名思义,就是对应用中的视觉元素进行更新,呈现新的显示效果.一般来说,换肤的时候只是更新UI上使用的资源,如颜色,图片,字体等等.本文介绍一种笔者自己使用的基于布局的Android换肤方案,不仅 ...

  10. PowerShell 远程执行任务

    在 linux 中我们可以使用 SSH 执行各种远程操作,同样的在 windows 平台上我们可以通过 PowerShell 获得类似的能力.本文将介绍通过 PowerShell 执行远程操作的基本信 ...