判断包含及编码的一个问题

gistop 2014-07-15 07:35:13
php判断包含,如
if(strstr($file,“土”))
{
。。。。。。
}
这么写死判断是否包含“土”这个字,正常,能找到。

在html页面通过jquery以ajax方式发送
var params = "username=" + "土"; //序列化表单的值
$.ajax({
url: 'getpic0714a.php', //后台处理程序
type: 'post', //数据发送方式
dataType: 'json', //接受数据格式
data: params, //要传递的数据
success: update_page //回传函数(这里是函数名)
});
//发起图片请求结尾

php页面接收如下
$filename = $_REQUEST['username'];

并用$filename替换判断包含代码的“土”,如下:
if(strstr($file,$filename))
{
。。。。。。
}
这样就没找到有包含的。

这个,该怎么解决呢?
多谢指点。
...全文
109 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
码无边 2014-07-15
  • 打赏
  • 举报
回复
var_dump(array($file,$filename));调试的时候,打印值看看。
xuzuning 2014-07-15
  • 打赏
  • 举报
回复
gb2312 字符集远小于 utf-8 字符集 至少需要 $file = iconv('gbk', 'UTF-8', $file); 才不会被截断 再说,你一定就有文件名中包含“土”字的文件吗?
gistop 2014-07-15
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
ajax 总是以 utf-8 字符集发送数据 所以你需要在 gbk 程序中对传入的数据进行编码转换 $filename = iconv('utf-8', 'gbk', $_REQUEST['username']); 如果你向 ajax 返回的是 gbk 的内容,则需加上字符集声明的头 header('Content-type: text/html;charset=GBK'); 不清楚 $file 变量的值的来源,可能对他做编码转换要简单些
多谢这位大哥的指点。$file就是php遍历的文件名,用了iconv的。 $file=iconv('gb2312','UTF-8',$file); 应该都是UTF-8,但还是不行。
xuzuning 2014-07-15
  • 打赏
  • 举报
回复
ajax 总是以 utf-8 字符集发送数据 所以你需要在 gbk 程序中对传入的数据进行编码转换 $filename = iconv('utf-8', 'gbk', $_REQUEST['username']); 如果你向 ajax 返回的是 gbk 的内容,则需加上字符集声明的头 header('Content-type: text/html;charset=GBK'); 不清楚 $file 变量的值的来源,可能对他做编码转换要简单些

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧