【后注】: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也是,只有这一种写法是集中浏览器是兼容的。
分享到:
相关推荐
CodeIgniter框架
基于Codeigniter框架的pkadmin后台管理系统源码基于Codeigniter框架的pkadmin后台管理系统源码基于Codeigniter框架的pkadmin后台管理系统源码基于Codeigniter框架的pkadmin后台管理系统源码基于Codeigniter框架的...
PHP敏捷开发CodeIgniter框架
大多数PHPer都想写出运行状态良好的应用程序,而且希望尽可能做得简单且不费事。这篇文章是有关 CodeIgniter的(以后简称CI),CI是一个达成上面目的的所谓框架。
CodeIgniter框架chm手册,在网上找了好久没有找到chm的 所以自己做了一个
PHP框架之CodeIgniter留言板实例PHP框架之CodeIgniter留言板实例PHP框架之CodeIgniter留言板实例PHP框架之CodeIgniter留言板实例PHP框架之CodeIgniter留言板实例PHP框架之CodeIgniter留言板实例PHP框架之CodeIgniter...
使用php的codeigniter框架做的教育网站
本资源包含: CodeIgniter中文参考手册.pdf; CodeIgniter用户指南(v1.7.2).chm; PHP敏捷开发框架CodeIgniter.chm。
Codeigniter框架整合Smarty引擎DEMO
Ajax-Codeigniter-3-Ajax-Form-Submission.zip,“codeigniter 3 ajax表单提交和验证教程”一集的源代码,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。它用于创建...
教程名称:PHP敏捷开发 使用CodeIgniter 框架 8天完成电子商务网站的开课程目录:【】1.CI入门【】10.添加分类【】11.编辑分类【】14.商品属性添加和显示【】15.商品添加页面展示-ajax应用【】17.商品详细页【】18....
PHP100 > PHP100新版教程 第17讲 CodeIgniter框架教程(3) 第18讲 CodeIgniter框架教程(4) 课件解压密码
使用CodeIgniter框架快速开发PHP应用
PHP100教程2012版:CodeIgniter框架教程(3)(第17讲)解压密码
netbeans对Codeigniter框架支持的插件,其中包括两个插件。安装方法可以通过搜索Netbeans+PHP+Codeigniter等关键词找到具体的安装方法。
CodeIgniter 是一个简单快速的PHP MVC 框架
CodeIgniter 是一个小巧但功能强大的 PHP 框架,作为一个简单而“优雅”的工具包,它可以为 PHP 程序员建立功能完善的 Web 应用程序
目前,我手头上有几个正在运行的客户网站,我希望依照我指定的方式去对其进行检测控制以及测试,同时记录下程序操作行为,在我需要时我可以得到一份相关的报告。 本书中的范例无法将 CI 的功能一丝不漏的完全展示,...