`
兰迪RANDY
  • 浏览: 98386 次
文章分类
社区版块
存档分类
最新评论

Codeigniter框架在IE下ajax提交中文乱码问题及解决办法

阅读更多
【后注】:2012-04-28
虽然发表了这篇文章,不过后来发现原来这个问题是由于前端extjs框架在提交ajax数据时没有对数据进行编码造成的,解决办法其实很简单,encodeURI()即可,下面是代码片段:
var store = Ext.create('Ext.data.Store', {
    id:'simpsearchStore',
    autoLoad: {start: 0,limit: js_config.search_limit},
    fields:['id','cmv','name','unit','freq','src'],
    pageSize: js_config.search_limit,
    proxy: {
      type: 'ajax',
      url: encodeURI('/indicator/search?q='+q),
      reader: {
        type: 'json',
        root: 'docs',
        totalProperty: 'total',
      }
    }
});

大家在遇到类似问题的时候可以参考一下,查一下js的url是否经过编码了

CI在UTF8_ENABLED == true的情况下会对客户端提交的字符串进行clean_string操作,该操作的原始代码如下:
function clean_string($str)
{
	if ($this->_is_ascii($str) === FALSE)
	{
		$str = @iconv('UTF-8', 'UTF-8//IGNORE', $str);
	}

	return $str;
}


这里的意思很明显,对于ASCII字符使用iconv函数进行强制转换,该函数在FF/CHROME/OPERA等浏览器下均正常运行,唯有IE不行(我这里测试的是IE9),查看log才发现有错误信息,错误信息类似于:
Severity: Notice --> iconv(): Detected an illegal character in input string /app/system/codeigniter/core/Utf8.php 89
其中89行就是$str = @iconv('UTF-8', 'UTF-8//IGNORE', $str);这一行,网上有些文章说使用mb_convert_encoding可以解决问题,可以并没有一篇文章提到具体如何该,下面是我自己的解决方案,完整代码如下:
function clean_string($str)
{
	if ($this->_is_ascii($str) === FALSE)
	{
		//$str = @iconv('UTF-8', 'UTF-8//IGNORE', $str);
		$str = @mb_convert_encoding($str,'UTF-8', 'UTF-8,ASCII,GBK');
	}
	return $str;
}


这里要特别留意第三个参数,几个值不同的顺序也会有不同的结果,我自己曾经试过只填写GBK,这样会变成IE正常,但是其他浏览器都出问题了,然后ASCII也是,只有这一种写法是集中浏览器是兼容的。
0
3
分享到:
评论

相关推荐

    CodeIgniter框架

    8. **开发效率**:CodeIgniter的轻量化设计使得开发速度加快,同时,它的文档详尽,社区活跃,这意味着开发者可以迅速找到解决问题的方法。 9. **扩展性与第三方库**:CodeIgniter支持通过插件和自定义类库进行扩展...

    基于Codeigniter框架的pkadmin后台管理系统.zip

    基于Codeigniter框架的pkadmin后台管理系统源码基于Codeigniter框架的pkadmin后台管理系统源码基于Codeigniter框架的pkadmin后台管理系统源码基于Codeigniter框架的pkadmin后台管理系统源码基于Codeigniter框架的...

    php基于CodeIgniter框架

    CI 的出现是为了解决开发者在编写应用程序时遇到的问题,即希望写出运行状态良好的应用程序,同时也希望尽可能简单且不费事。 CI 的特点包括免费、轻量级、易于安装等,使开发者的编程生涯变得轻松。CI 的优点还...

    使用php的codeigniter框架做的教育网站

    5. 错误处理和调试:强大的错误报告和日志系统,便于开发者定位和解决问题。 6. 灵活的URL路由:可以根据需要自定义URL结构,提高用户体验。 7. 组件丰富:包括表单验证、电子邮件、会话管理等实用类库,方便...

    php敏捷开发框架Codeigniter

    在压缩包中的"敏捷开发Codeigniter"可能包含了关于如何在CodeIgniter框架下实践敏捷开发方法的资源,比如快速原型设计、持续集成、测试驱动开发等实践。这些资料可以帮助开发者更好地运用敏捷理念,提高开发效率和...

    PHP开发框架CodeIgniter中文参考资料

    1. **CodeIgniter中文参考手册.pdf**:这份文档详细地介绍了CodeIgniter的各种组件和功能,包括控制器、模型、视图、数据库操作、表单验证、安全和会话管理等。它为开发者提供了一个全面的API参考,帮助他们理解和...

    CodeIgniter框架chm手册

    CodeIgniter框架chm手册,在网上找了好久没有找到chm的 所以自己做了一个

    PHP100教程2012版:CodeIgniter框架教程(3)(第17讲) 解压密码

    通过以上介绍可以看出,CodeIgniter框架不仅具备高效、简洁的特点,而且在实际项目开发中有着广泛的应用场景。无论是简单的用户认证还是复杂的文章管理系统,都可以借助CodeIgniter框架快速搭建起来。希望本文能为...

    PHP框架之CodeIgniter留言板实例

    PHP框架之CodeIgniter留言板实例PHP框架之CodeIgniter留言板实例PHP框架之CodeIgniter留言板实例PHP框架之CodeIgniter留言板实例PHP框架之CodeIgniter留言板实例PHP框架之CodeIgniter留言板实例PHP框架之CodeIgniter...

    CodeIgniter是一个简单快速的PHPMVC框架

    4. **更好的错误报告和日志**:框架提供了更详细的错误报告和日志记录机制,帮助开发者更快地定位和解决问题。 5. **安全增强**:包括输入过滤、XSS防护、CSRF保护等安全特性,有助于预防常见的Web攻击。 6. **CLI...

    用CodeIgniter框架快速构建企业门户网站.pdf

    CodeIgniter 框架快速构建企业门户网站 CodeIgniter 是一个免费、轻量级、容易安装的 PHP 开发框架,采用 MVC 模式,可以使开发变得轻松。使用 CodeIgniter 框架可以快速开发出适合企业需求的门户网站。 1. ...

    Ajax-Codeigniter-3-Ajax-Form-Submission.zip

    Ajax-Codeigniter-3-Ajax-Form-Submission.zip,“codeigniter 3 ajax表单提交和验证教程”一集的源代码,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。它用于创建...

    PHP敏捷开发使用CodeIgniter框架8天完成电子商务网站的开

    教程名称:PHP敏捷开发 使用CodeIgniter 框架 8天完成电子商务网站的开课程目录:【】1.CI入门【】10.添加分类【】11.编辑分类【】14.商品属性添加和显示【】15.商品添加页面展示-ajax应用【】17.商品详细页【】18....

    Codeigniter框架整合Smarty引擎DEMO

    在本DEMO中,我们将探讨如何在CodeIgniter框架中集成Smarty,实现MVC模式下的模板处理。 首先,你需要确保已经安装了CodeIgniter框架。如果没有,可以从官方站点下载最新版本并解压到你的服务器或本地开发环境中。...

    Netbeans对Codeigniter框架支持的插件

    标题中的“Netbeans对Codeigniter框架支持的插件”是指NetBeans IDE为了方便开发者使用Codeigniter框架而设计的扩展工具。Codeigniter是一款轻量级、高效的PHP框架,常用于快速开发Web应用程序。NetBeans作为一个...

    PHP100-第17讲CodeIgniter框架教程(3)和第18讲CodeIgniter框架教程(4)-解压密码

    PHP100 > PHP100新版教程 第17讲 CodeIgniter框架教程(3) 第18讲 CodeIgniter框架教程(4) 课件解压密码

    CodeIgniter输出中文乱码的两种解决办法

    本文将详细讲解在CodeIgniter中如何解决控制器(Controller)直接输出中文时出现的乱码现象。 首先,我们需要理解为什么会出现乱码。乱码通常是由于字符编码不一致导致的。浏览器和服务器之间传输的数据如果没有...

Global site tag (gtag.js) - Google Analytics