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、把表单数据打包成数组,进行编码转换
1 public function changeIconv(array $data){ 2 $arr = array(); 3 foreach($data as $key=>$val){ 4 $arr[$key] = iconv('utf-8', 'gbk', $val); 5 } 6 return $arr; 7 }
3、直接在获取表单数据时就进行编码转换
1 /** 2 * [RQP 获取参数值] 3 * @param [type] $params [参数名] 4 * @param string $default [默认值] 5 * @param boolean $isIconv [是否转码 false 默认不转码] 6 */ 7 protected function RQP($params, $default = '', $isIconv = false) { 8 if ($isIconv) { 9 $data = Yii::app()->request->getParam($params, $default); 10 $data = iconv('utf-8', 'gbk', $data); 11 return $data; 12 } 13 return Yii::app()->request->getParam($params,$default); 14 } 15 /************获取参数*******************/ 16 private function getParams(){ 17 $user = $this->RQP('username', '', true); 18 }
个人喜欢用第三种,只要封装好之后,不管那一个数据添加功能都可以用

浙公网安备 33010602011771号