解决了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 09 PHP
一个php作的文本留言本的例子(四)
Oct 09 PHP
隐藏你的.php文件的实现方法
Mar 19 PHP
PHP设计模式之结构模式的深入解析
Jun 13 PHP
PHP分页效率终结版(推荐)
Jul 01 PHP
php获取qq用户昵称和在线状态(实例分析)
Oct 27 PHP
CodeIgniter中使用cookie的三种方式详解
Jul 18 PHP
ThinkPHP之用户注册登录留言完整实例
Jul 22 PHP
利用php的ob缓存机制实现页面静态化方法
Jul 09 PHP
PHP实现批量重命名某个文件夹下所有文件的方法
Sep 04 PHP
PHP基于SPL实现的迭代器模式示例
Apr 22 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
Jun 13 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下载文件的详解
2013/06/02 PHP
在wamp集成环境下升级php版本(实现方法)
2013/07/01 PHP
ThinkPHP框架设计及扩展详解
2014/11/25 PHP
PHP中遇到的时区问题解决方法
2015/07/23 PHP
PHPStudy下如何为Apache安装SSL证书的方法步骤
2019/01/23 PHP
uploadify在Firefox下丢失session问题的解决方法
2013/08/07 Javascript
一个判断抢购时间是否到达的简单的js函数
2014/06/23 Javascript
JS实现点击按钮后框架内载入不同网页的方法
2015/05/05 Javascript
浅析Nodejs npm常用命令
2016/06/14 NodeJs
jQuery实现可以编辑的表格实例详解【附demo源码下载】
2016/07/09 Javascript
浅谈jQuery中的eq()与DOM中element.[]的区别
2016/10/28 Javascript
Node.js中用D3.js的方法示例
2017/01/16 Javascript
JS常用知识点整理
2017/01/21 Javascript
利用Jquery实现几款漂亮实用的时间轴(附示例代码)
2017/02/15 Javascript
浅谈JS获取元素的N种方法及其动静态讨论
2017/08/25 Javascript
基于bootstrap页面渲染的问题解决方法
2018/08/09 Javascript
浅谈vue限制文本框输入数字的正确姿势
2019/09/02 Javascript
原生JS实现京东查看商品点击放大
2020/12/21 Javascript
Python cookbook(数据结构与算法)实现查找两个字典相同点的方法
2018/02/18 Python
Python格式化输出字符串方法小结【%与format】
2018/10/29 Python
Django 对象关系映射(ORM)源码详解
2019/08/06 Python
python实现跨excel sheet复制代码实例
2020/03/03 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
2020/08/18 Python
Django-celery-beat动态添加周期性任务实现过程解析
2020/11/26 Python
Priority Pass机场贵宾室会籍计划:全球超过1200间机场贵宾室
2018/08/26 全球购物
Pedro官网:新加坡时尚品牌
2019/08/27 全球购物
《花木兰》教学反思
2014/04/09 职场文书
热门专业求职信
2014/05/24 职场文书
小学数学课题方案
2014/06/15 职场文书
安全伴我行演讲稿
2014/09/04 职场文书
2015年世界水日活动总结
2015/02/09 职场文书
中班下学期个人工作总结
2015/02/12 职场文书
2015年妇女工作总结
2015/05/14 职场文书
秋菊打官司观后感
2015/06/03 职场文书
golang elasticsearch Client的使用详解
2021/05/05 Golang
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
2021/11/11 Python