解决了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 相关文章推荐
ecshop 订单确认中显示省市地址信息的方法
Mar 15 PHP
七款最流行的PHP本地服务器分享
Feb 19 PHP
PHP根据IP判断地区名信息的示例代码
Mar 03 PHP
php获取apk包信息的方法
Aug 15 PHP
CodeIgniter多语言实现方法详解
Jan 20 PHP
PHP函数超时处理方法
Feb 14 PHP
Json_encode防止汉字转义成unicode的方法
Feb 25 PHP
yii2分页之实现跳转到具体某页的实例代码
Jun 02 PHP
php 中的closure用法详解
Jun 12 PHP
PHP 实现页面静态化的几种方法
Jul 23 PHP
php生成HTML文件的类方法
Oct 11 PHP
Aliyun Linux 编译安装 php7.3 tengine2.3.2 mysql8.0 redis5的过程详解
Oct 20 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
日本收入最高的漫画家:海贼王作者版税年收入高达8.45亿元
2020/03/04 日漫
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
2006/12/06 PHP
CI框架常用函数封装实例
2016/11/21 PHP
PHP实现的登录,注册及密码修改功能分析
2016/11/25 PHP
利用JavaScript检测CPU使用率自己写的
2014/03/22 Javascript
了不起的node.js读书笔记之mongodb数据库交互
2014/12/22 Javascript
jQuery简单实现QQ空间点赞已经取消点赞
2015/04/02 Javascript
node.js操作mysql(增删改查)
2015/07/24 Javascript
全面解析Bootstrap图片轮播效果
2015/12/03 Javascript
Node.js 条形码识别程序构建思路详解
2016/02/14 Javascript
JavaScript模拟数组合并concat
2016/03/06 Javascript
JS匿名函数实例分析
2016/11/26 Javascript
详解Vue.js——60分钟组件快速入门(上篇)
2016/12/05 Javascript
一个炫酷的Bootstrap导航菜单
2016/12/28 Javascript
angular forEach方法遍历源码解读
2017/01/25 Javascript
AngularJS中控制器函数的定义与使用方法示例
2017/10/10 Javascript
用JS实现根据当前时间随机生成流水号或者订单号
2018/05/31 Javascript
jQuery md5加密插件jQuery.md5.js用法示例
2018/08/24 jQuery
vue+axios+element ui 实现全局loading加载示例
2018/09/11 Javascript
node.js连接mysql与基本用法示例
2019/01/05 Javascript
安装Python的web.py框架并从hello world开始编程
2015/04/25 Python
Python处理字符串之isspace()方法的使用
2015/05/19 Python
基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解
2017/10/13 Python
一道python走迷宫算法题
2018/01/22 Python
python实现京东秒杀功能
2018/07/30 Python
对Python使用mfcc的两种方式详解
2019/01/09 Python
python3 requests库实现多图片爬取教程
2019/12/18 Python
纯CSS实现预加载动画效果
2017/09/06 HTML / CSS
canvas实现手机的手势解锁的步骤详细
2020/03/16 HTML / CSS
文员的职业生涯规划发展方向
2014/02/08 职场文书
党的群众路线教育实践活动查摆问题自查报告
2014/10/10 职场文书
购房委托书
2014/10/15 职场文书
个人股份合作协议书
2014/10/24 职场文书
大学生见习报告范文
2014/11/03 职场文书
《七律·长征》教学反思
2016/02/16 职场文书
Redis实现订单自动过期功能的示例代码
2021/05/08 Redis