解决了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 相关文章推荐
用 PHP5 轻松解析 XML
Dec 04 PHP
用ADODB来让PHP操作ACCESS数据库的方法
Dec 31 PHP
用PHP读取RSS feed的代码
Aug 01 PHP
PHP 数据库树的遍历方法
Feb 06 PHP
php中stream(流)的用法
Mar 25 PHP
php去除换行(回车换行)的三种方法
Mar 26 PHP
Codeigniter实现处理用户登录验证后的URL跳转
Jun 12 PHP
php使用GeoIP库实例
Jun 27 PHP
php中socket的用法详解
Oct 24 PHP
CI框架文件上传类及图像处理类用法分析
May 18 PHP
PHP实现时间比较和时间差计算的方法示例
Jul 24 PHP
php如何把表单内容提交到数据库
Jul 08 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
JavaScript delete 属性的使用
2009/10/08 Javascript
Jquery 1.42 checkbox 全选和反选代码
2010/03/27 Javascript
JavaScript+canvas实现七色板效果实例
2016/02/18 Javascript
jQuery弹出层后禁用底部滚动条(移动端关闭回到原位置)
2016/08/29 Javascript
EasyUI学习之Combobox下拉列表(1)
2016/12/29 Javascript
Vue学习笔记进阶篇之vue-router安装及使用方法
2017/07/19 Javascript
把JavaScript代码改成ES6语法不完全指南(分享)
2017/09/10 Javascript
JavaScript数据结构与算法之队列原理与用法实例详解
2017/11/22 Javascript
vue项目中导入swiper插件的方法
2018/01/30 Javascript
tsconfig.json配置详解
2019/05/17 Javascript
vue循环数组改变点击文字的颜色
2019/10/14 Javascript
vue实现从外部修改组件内部的变量的值
2020/07/30 Javascript
centos 下面安装python2.7 +pip +mysqld
2014/11/18 Python
Python读写docx文件的方法
2018/05/08 Python
python实现随机梯度下降法
2020/03/24 Python
Python使用字典的嵌套功能详解
2019/02/27 Python
pandas的qcut()方法详解
2019/07/06 Python
python实现PID算法及测试的例子
2019/08/08 Python
Python动态声明变量赋值代码实例
2019/12/30 Python
解决Pycharm的项目目录突然消失的问题
2020/01/20 Python
pytorch使用tensorboardX进行loss可视化实例
2020/02/24 Python
tensorflow常用函数API介绍
2020/04/19 Python
python中的时区问题
2021/01/14 Python
Python+Appium实现自动化清理微信僵尸好友的方法
2021/02/04 Python
详解Python中openpyxl模块基本用法
2021/02/23 Python
让IE下支持Html5的placeholder属性的插件
2014/09/02 HTML / CSS
工程招投标邀请书
2014/01/26 职场文书
建议书标准格式
2014/03/12 职场文书
大学生评语大全
2014/04/18 职场文书
技术岗位竞聘演讲稿
2014/05/16 职场文书
2014年平安创建工作总结
2014/11/24 职场文书
2014年乡镇工会工作总结
2014/12/02 职场文书
欢迎词怎么写
2015/01/23 职场文书
幼师辞职信范文大全
2015/05/12 职场文书
《女娲补天》教学反思
2016/02/20 职场文书
52条SQL语句教你性能优化
2021/05/25 MySQL