解决了Ajax、MySQL 和 Zend Framework 的乱码问题


Posted in PHP onMarch 03, 2009

问题:
在 Google Map 上用 Ajax 以 get 方式向服务器传递数据时,服务器端显示为 url 乱码,
Zend Framework 向 MySQL 存储数据为乱码,但是提取出来又是正常中文字体,
MySQL 中输入中文,显示在 PHP 网页上为乱码。
解决方式:
1. Ajax 的 url 编码需要转换,我使用的如下函数:
public function js_unescape($str)
{
$ret = '';
$len = strlen($str);
for ($i = 0; $i < $len; $i++)
{
if ($str[$i] == '%' && $str[$i+1] == 'u')
{
$val = hexdec(substr($str, $i+2, 4));
if ($val < 0x7f) $ret .= chr($val);
else if($val < 0x800) $ret .= chr(0xc0|($val>>6)).chr(0x80|($val&0x3f));
else $ret .= chr(0xe0|($val>>12)).chr(0x80|(($val>>6)&0x3f)).chr(0x80|($val&0x3f));
$i += 5;
}
else if ($str[$i] == '%')
{
$ret .= urldecode(substr($str, $i, 3));
$i += 2;
}
else $ret .= $str[$i];
}
return $ret;
}
调用示例: $row->name =XmlController::js_unescape( $this->getRequest()->getParam('name') );
2. 把所有涉及编码的地方都设为 utf8(php) 或 utf-8
MySQL 包括数据库,数据表,字段,数据库连接。
Zend Framework 包括数据连接,视图和html输出。
Ajax 包括 Javascript ,XML 的文件编码和字体编码。
Zend Framework数据连接编码设置:
参考http://phpeye.com/bbs/redirect.php?fid=2&tid=81&goto=nextoldset
Zend_Db_Table::setDefaultAdapter($dbAdapter);
Zend_Registry::set('dbAdapter', $dbAdapter);
$dbAdapter->query("SET NAMES 'utf8'");
如果是 PHP 直接连接则这样设置:
// Select all the rows in the markers table
$query = "SELECT * FROM markers WHERE 1";
//select 数据库之后加多这一句
mysql_query("SET NAMES utf8");
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET COLLATION_CONNECTION='utf8_general_ci'");

PHP 相关文章推荐
PHP中static关键字原理的学习研究分析
Jul 18 PHP
php获取301跳转URL简单实例
Dec 16 PHP
php反射应用示例
Feb 25 PHP
php5.3以后的版本连接sqlserver2000的方法
Jul 28 PHP
PHP实现C#山寨ArrayList的方法
Jul 16 PHP
以实例全面讲解PHP中多进程编程的相关函数的使用
Aug 18 PHP
Symfony2联合查询实现方法
Mar 18 PHP
php分页查询的简单实现代码
Mar 14 PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
Aug 07 PHP
PHP对称加密算法(DES/AES)类的实现代码
Nov 14 PHP
PHP的微信支付接口使用方法讲解
Mar 08 PHP
Yii框架函数简单用法分析
Sep 09 PHP
php Try Catch异常测试
Mar 01 #PHP
php 采集书并合成txt格式的实现代码
Mar 01 #PHP
PHP Ajax中文乱码问题解决方法
Feb 27 #PHP
php下几个常用的去空、分组、调试数组函数
Feb 22 #PHP
PHP 编程的 5个良好习惯
Feb 20 #PHP
PHP 截取字符串 分别适合GB2312和UTF8编码情况
Feb 12 #PHP
PHP 操作文件的一些FAQ总结
Feb 12 #PHP
You might like
用PHP连mysql和oracle数据库性能比较
2006/10/09 PHP
谈谈新手如何学习PHP
2006/12/23 PHP
wiki-shan写的php在线加密的解密程序
2008/09/07 PHP
PHP 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
2009/01/30 PHP
一道求$b相对于$a的相对路径的php代码
2010/08/08 PHP
PHP获取数组长度或某个值出现次数的方法
2015/02/11 PHP
php使用curl伪造来源ip和refer的方法示例
2018/05/08 PHP
一直复略了的一个问题,关于表单重复提交
2007/02/15 Javascript
ExtJS Grid使用SimpleStore、多选框的方法
2009/11/20 Javascript
javascript中HTMLDOM操作详解
2014/12/11 Javascript
jquery实现文本框textarea自适应高度
2016/03/09 Javascript
Js得到radiobuttonlist选中值的两种方法(推荐)
2016/08/25 Javascript
AngularJS 在同一个界面启动多个ng-app应用模块详解
2016/12/20 Javascript
jquery实现input框获取焦点的简单实例
2017/01/26 Javascript
vue实现验证码按钮倒计时功能
2018/04/10 Javascript
使用proxy实现一个更优雅的vue【推荐】
2018/06/19 Javascript
nodejs读取本地中文json文件出现乱码解决方法
2018/10/10 NodeJs
vue2.0基于vue-cli+element-ui制作树形treeTable
2019/04/30 Javascript
[10:53]2018DOTA2国际邀请赛寻真——EG
2018/08/11 DOTA
Python+OpenCV实现图像融合的原理及代码
2018/12/03 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
2019/10/24 Python
使用 Python 遍历目录树的方法
2020/02/29 Python
Python自定义sorted排序实现方法详解
2020/09/18 Python
非常漂亮的CSS3百叶窗焦点图动画
2016/02/24 HTML / CSS
使用HTML5做个画图板的方法介绍
2013/05/03 HTML / CSS
中国专业的综合网上购物商城:京东
2016/08/02 全球购物
I.T集团香港官方商城:ITeSHOP.com Hong Kong
2019/02/15 全球购物
教育课题研究自我鉴定范文
2013/12/28 职场文书
科技开发中心办公室主任岗位责任制
2014/02/10 职场文书
安全生产月宣传标语
2014/10/06 职场文书
党的群众路线教育实践活动总结
2014/10/30 职场文书
网络管理员岗位职责
2015/02/12 职场文书
机关单位2016年法制宣传日活动总结
2016/04/01 职场文书
申论不会写怎么办?教您掌握这6点思维和原则
2019/07/17 职场文书
python必学知识之文件操作(建议收藏)
2021/05/30 Python
MySql 8.0及对应驱动包匹配的注意点说明
2021/06/23 MySQL