解决了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将fileterms函数返回的结果变成可读的形式
Apr 21 PHP
PHP中SESSION使用中的一点经验总结
Mar 30 PHP
通过PHP的内置函数,通过DES算法对数据加密和解密
Jun 21 PHP
php实现粘贴截图并完成上传功能
May 17 PHP
php实现Session存储到Redis
Nov 11 PHP
php仿微信红包分配算法的实现方法
May 13 PHP
Yii2主题(Theme)用法详解
Jul 23 PHP
php微信公众平台开发(一) 配置接口
Dec 06 PHP
php lcg_value与mt_rand生成0~1随机小数的效果对比分析
Apr 05 PHP
PHP实现查询手机归属地的方法详解
Apr 28 PHP
laravel 字段格式化 modle 字段类型转换方法
Sep 30 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几个预定义变量$_SERVER用法小结
2014/11/07 PHP
php根据数据id自动生成编号的实现方法
2016/10/16 PHP
Mac系统下搭建Nginx+php-fpm实例讲解
2020/12/15 PHP
JavaScript 特殊字符
2007/04/05 Javascript
js模拟类继承小例子
2010/07/17 Javascript
在JavaScript中使用timer示例
2014/05/08 Javascript
在Linux系统中搭建Node.js开发环境的简单步骤讲解
2016/01/26 Javascript
JS组件Bootstrap Select2使用方法解析
2016/05/30 Javascript
JavaScript浏览器对象之一Window对象详解
2016/06/03 Javascript
数组Array的排序sort方法
2017/02/17 Javascript
JavaScript使用readAsDataURL读取图像文件
2017/05/10 Javascript
微信小程序用户自定义模版用法实例分析
2017/11/28 Javascript
Vuex的基本概念、项目搭建以及入坑点
2018/11/04 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
[01:10:48]完美世界DOTA2联赛PWL S2 GXR vs PXG 第一场 11.18
2020/11/18 DOTA
python使用内存zipfile对象在内存中打包文件示例
2014/04/30 Python
python实现自动登录人人网并采集信息的方法
2015/06/28 Python
简单介绍使用Python解析并修改XML文档的方法
2015/10/15 Python
Python中进程和线程的区别详解
2017/10/29 Python
1分钟快速生成用于网页内容提取的xslt
2018/02/23 Python
windows下cx_Freeze生成Python可执行程序的详细步骤
2018/10/09 Python
使用Python的networkx绘制精美网络图教程
2019/11/21 Python
python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例
2020/02/27 Python
Python判断变量是否是None写法代码实例
2020/10/09 Python
美国顶级防滑鞋:Shoes For Crews
2017/03/27 全球购物
Club Monaco加拿大官网:设计师男女服装
2019/09/29 全球购物
在C语言中实现抽象数据类型什么方法最好
2014/06/26 面试题
初中生个人学习的自我评价
2013/12/04 职场文书
管理学院毕业生自荐信范文
2014/03/10 职场文书
四风问题对照检查材料整改措施
2014/09/27 职场文书
个人贷款收入证明
2014/10/26 职场文书
2015年宣传部工作总结范文
2015/03/31 职场文书
胡桃夹子观后感
2015/06/11 职场文书
七一晚会主持词
2015/06/29 职场文书
高中历史教学反思
2016/02/19 职场文书
angular4实现带搜索的下拉框
2022/03/25 Javascript