解决了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 相关文章推荐
Smarty安装配置方法
Apr 10 PHP
php统计文件大小,以GB、MB、KB、B输出
May 29 PHP
如何用php生成扭曲及旋转的验证码图片
Jun 07 PHP
解析PHP实现下载文件的两种方法
Jul 05 PHP
PHP编程中的常见漏洞和代码实例
Aug 06 PHP
getJSON跨域SyntaxError问题分析
Aug 07 PHP
php处理单文件、多文件上传代码分享
Aug 24 PHP
php  单例模式详细介绍及实现源码
Nov 05 PHP
php array_values 返回数组的所有值详解及实例
Nov 12 PHP
PHP面向对象多态性实现方法简单示例
Sep 27 PHP
Laravel5.4简单实现app接口Api Token认证方法
Aug 29 PHP
php中yar框架实例用法讲解
Dec 27 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
超人钢铁侠联手合作?美漫作家呼吁DC漫威合作联动以抵抗疫情
2020/04/09 欧美动漫
特转载一高手总结PHP学习资源和链接.
2006/12/05 PHP
浅谈PHP与C#的值类型指向区别的详解
2013/05/21 PHP
getimagesize获取图片尺寸实例
2014/11/15 PHP
大家在抢红包,程序员在研究红包算法
2015/08/31 PHP
PHP时间类完整实例(非常实用)
2015/12/25 PHP
php+mysql+jquery实现简易的检索自动补全提示功能
2017/04/15 PHP
PHP实现数组根据某个单元字段排序操作示例
2018/08/01 PHP
PHP集成环境XAMPP的安装与配置
2018/11/13 PHP
BOOM vs RR BO5 第一场 2.14
2021/03/10 DOTA
推荐dojo学习笔记
2007/03/24 Javascript
Google (Local) Search API的简单使用介绍
2013/11/28 Javascript
Bootstrap开关(switch)控件学习笔记分享
2016/05/30 Javascript
javaScript 事件绑定、事件冒泡、事件捕获和事件执行顺序整理总结
2016/10/10 Javascript
JS实现的走迷宫小游戏完整实例
2017/07/19 Javascript
vue引入swiper插件的使用实例
2017/07/19 Javascript
AngularJS中的路由使用及实现代码
2017/10/09 Javascript
vue2.0使用v-for循环制作多级嵌套菜单栏
2018/06/25 Javascript
vue2.0 element-ui中el-select选择器无法显示选中的内容(解决方法)
2018/08/24 Javascript
js根据json数据中的某一个属性来给数据分组的方法
2018/10/08 Javascript
微信小程序JS加载esmap地图的实例详解
2019/09/04 Javascript
解决layer弹出层中表单不起作用的问题
2019/09/09 Javascript
vue实现按钮切换图片
2021/01/20 Vue.js
vue 计算属性和侦听器的使用小结
2021/01/25 Vue.js
Python文件的读写和异常代码示例
2017/10/31 Python
python自动保存百度盘资源到百度盘中的实例代码
2019/08/26 Python
django框架cookie和session用法实例详解
2019/12/10 Python
Python安装whl文件过程图解
2020/02/18 Python
6种非常炫酷的CSS3按钮边框动画特效
2016/03/16 HTML / CSS
CSS3实现内凹圆角的实例代码
2017/05/04 HTML / CSS
意大利包包和行李箱销售网站:Bagaglio.it
2021/03/02 全球购物
毕业生的求职信范文分享
2013/12/04 职场文书
2014年租房协议书范本
2014/10/30 职场文书
2014-2015学年工作总结
2014/11/27 职场文书
2014年远程教育工作总结
2014/12/09 职场文书
诗词赏析-(浣溪沙)
2019/08/13 职场文书