PHP部分问题的总结
一、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);
}
个人喜欢用第三种,只要封装好之后,不管那一个数据添加功能都可以用
随机推荐
- [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 ...
- 【LeetCode】205. Isomorphic Strings
题目: Given two strings s and t, determine if they are isomorphic. Two strings are isomorphic if the c ...
- Kotlin入门第四课:简单工厂模式
Kotlin基础知识的学习,请参考之前的文章: Kotlin入门第一课:从对比Java开始 Kotlin入门第二课:集合操作 Kotlin入门第三课:数据类型 初次尝试用Kotlin实现Android ...
- easyui框架--基础篇(一)-->数据表格datagrid(php与mysql交互)
前 言 php easyui框架--本篇学习主要是 easyui中的datagrid(数据表格)框架. 本篇学习主要通过讲解一段代码加GIF图片学习datagrid(数据表格)中的一些常用属 ...
- Dagger2在Android开发中的应用
世界是普遍联系的,任何事物和个体都直接或间接相互依赖,在时空长河中共同发展.在面向对象的世界中,更是如此,类与类之间的依赖,关联关系,模块(亦或是分层架构中的层)之间的耦合关系,都是我们在软件开发实践 ...
- axis1.4开发webservice服务端(快速入门)-基于jdk1.4
写在前面: 现在有很多开发webservice的方法以及框架,什么cxf等,但是这些在你编写服务类的时候都要用到注解这个功能.如果现在的jdk是1.4的,那么就不能使用注解这个功能了.所以这里可以用到 ...
- web前段学习2016.6.6
目前上网的方式:手机平板电脑移动端:智能手机.平板PC:电脑.笔记本运行在移动端的东西:APPios:object-candroid:javapc端的东西:桌面应用程序 c++ 我们上网的方式都是通过 ...
- VI修改文件
找到路径 vi 文件名 i 添加或修改 esc : wq 保存退出 --------------------------------------------------- ...
- Android可更换布局的换肤方案
换肤,顾名思义,就是对应用中的视觉元素进行更新,呈现新的显示效果.一般来说,换肤的时候只是更新UI上使用的资源,如颜色,图片,字体等等.本文介绍一种笔者自己使用的基于布局的Android换肤方案,不仅 ...
- PowerShell 远程执行任务
在 linux 中我们可以使用 SSH 执行各种远程操作,同样的在 windows 平台上我们可以通过 PowerShell 获得类似的能力.本文将介绍通过 PowerShell 执行远程操作的基本信 ...