解决了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清除数组中所有字符串两端空格的方法
Oct 20 PHP
PHP动态输出JavaScript代码实例
Feb 12 PHP
Thinkphp无限级分类代码
Nov 11 PHP
Zend Framework过滤器Zend_Filter用法详解
Dec 09 PHP
详解Yii实现分页的两种方法
Jan 14 PHP
php 静态属性和静态方法区别详解
Apr 09 PHP
PHP下 Mongodb 连接远程数据库的实例代码
Aug 30 PHP
php两点地理坐标距离的计算方法
Dec 29 PHP
PHP生成指定范围内的N个不重复的随机数
Mar 18 PHP
关于laravel模板中生成URL的几种模式总结
Oct 18 PHP
关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
Jul 13 PHP
PHP序列化和反序列化深度剖析实例讲解
Dec 29 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+redis实现添加处理投票的方法
2015/11/14 PHP
php实现生成PDF文件的方法示例【基于FPDF类库】
2018/07/21 PHP
thinkphp5.1框架模板布局与模板继承用法分析
2019/07/19 PHP
php输出文字乱码的解决方法
2019/10/04 PHP
NiftyCube——轻松实现圆角边框
2007/02/20 Javascript
JavaScript入门教程(1) 什么是JS
2009/01/31 Javascript
再分享70+免费的jquery 图片滑块效果插件和教程
2014/12/15 Javascript
jQuery插件slicebox实现3D动画图片轮播切换特效
2015/04/12 Javascript
JS中处理时间之setUTCMinutes()方法的使用
2015/06/12 Javascript
Bootstrap编写导航栏和登陆框
2016/05/30 Javascript
使用JQuery中的trim()方法去掉前后空格
2016/09/16 Javascript
Ajax与服务器(JSON)通信实例代码
2016/11/05 Javascript
快速解决bootstrap下拉菜单无法隐藏的问题
2018/08/10 Javascript
angular.js实现列表orderby排序的方法
2018/10/02 Javascript
NodeJs入门教程之定时器和队列
2019/03/08 NodeJs
JavaScript使用ul中li标签实现删除效果
2019/04/15 Javascript
微信小程序自定义菜单切换栏tabbar组件代码实例
2019/12/30 Javascript
[52:29]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第三局
2016/03/03 DOTA
Python中decorator使用实例
2015/04/14 Python
PyQt5实现无边框窗口的标题拖动和窗口缩放
2018/04/19 Python
Python3 单行多行万能正则匹配方法
2019/01/07 Python
PIL对上传到Django的图片进行处理并保存的实例
2019/08/07 Python
Python Numpy 自然数填充数组的实现
2019/11/28 Python
python多进程 主进程和子进程间共享和不共享全局变量实例
2020/04/25 Python
Carter’s官方旗舰店:美国受欢迎的婴童服装品牌
2018/01/21 全球购物
中国领先的汽车保养服务平台:途虎养车
2019/10/18 全球购物
生物技术专业研究生自荐信
2013/09/22 职场文书
党员年终民主评议的自我评价
2013/11/05 职场文书
小学门卫岗位职责
2013/12/17 职场文书
《梅花魂》教学反思
2014/04/30 职场文书
社保缴纳证明申请书
2014/11/03 职场文书
工程服务质量承诺书
2015/04/29 职场文书
2015年酒店年度工作总结
2015/05/23 职场文书
卢旺达饭店观后感
2015/06/05 职场文书
Oracle安装TNS_ADMIN环境变量设置参考
2021/11/01 Oracle
动画《朋友游戏》公开佐藤友生绘制的开播纪念绘
2022/04/06 日漫