免费注册 查看新帖 |

Chinaunix

广告
  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 6433 | 回复: 21
打印 上一主题 下一主题

[求助]php + xajax 数据库查询 中文不支持问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-05-16 11:52 |只看该作者 |倒序浏览
我通过xajax来实现变量传递,当变量$val为英文的时候就可以查询数据库,但为中文的时候就不可以查询数据库,不知道原因,代码如下,我试过好多办法都不行. 
  global $conn;
  $objResponse = new xajaxResponse();
      //$objResponse->setCharEncoding("GB2312");
      //$val =phpUnescape($val);
  $rst_title = mysql_query("select * from xh_title where title='".$val."'",$conn) ;
  $zzz = "select * from xh_title where title='".$val."'";
  $objResponse->addAlert($zzz);
  while ($row = mysql_fetch_array ($rst_title)) {
        $objResponse->addAlert($row["id"]);
        $objResponse->addAlert($row["title"]);
    }
   
   return $objResponse;

[ 本帖最后由 jiantang2008 于 2007-5-16 11:58 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-05-16 12:51 |只看该作者
xajax.inc.php

define ('XAJAX_DEFAULT_CHAR_ENCODING', 'utf-8' ); GB2312试一下,


不行的话,转换一下

论坛徽章:
0
3 [报告]
发表于 2007-05-16 13:16 |只看该作者
把传送到服务器的字符串用escape转换一下,到了服务器端转回去

论坛徽章:
0
4 [报告]
发表于 2007-05-16 14:06 |只看该作者

回复 3楼 asers_z 的帖子

escape 是通过连接将的参数编码,然后在服务器通过unescape解码;我发现xajax 是通过 <input type=text id = "textid"name="text" value="inputstring" onblur="xajax_checkText(document.getElementById('textid').value);"> ,直接将js 里的函数checkText()处理,没有走连接编码,xajax好象已经对变量进行了一次默认的ut-f8编码 ,上面说的变量$var就是document.getElementById('textid').value的值

论坛徽章:
0
5 [报告]
发表于 2007-05-16 14:07 |只看该作者

回复 2楼 一棵白菜 的帖子

我试过了好象不成.

论坛徽章:
0
6 [报告]
发表于 2007-05-17 06:44 |只看该作者

回复 1楼 jiantang2008 的帖子

定义xajax编码define ('XAJAX_DEFAULT_CHAR_ENCODING','gb2312');
不知道你的 $val 是否是中文,如果$val是中文有可能是数据库字符集的问题可以在你的mysql_query之前执行mysql_query("set names gb2312")试一下;如果不是中文可以将 $val 先进行转换 mb_convert_encoding($val,"gb2312","UTF-8")再mysql_query

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
7 [报告]
发表于 2007-05-17 13:12 |只看该作者
第一:页面,浏览时,查看是什么边
第二:传送啊到服务器,str_len看看长度是多少?

论坛徽章:
0
8 [报告]
发表于 2007-05-17 14:00 |只看该作者
这个算是老问题了,前几天我还在解决呢

现在碰到中文都不用ajax了

论坛徽章:
0
9 [报告]
发表于 2007-05-17 16:12 |只看该作者

回复 6楼 courage121 的帖子

通过设置mysql_query("set names gb2312"),xajax 不在报错了,可是为什么还是当$val 为中文的时候,得不到数据库的里的结果那?英文的到可以得到啊;请指教啊

论坛徽章:
0
10 [报告]
发表于 2007-05-19 22:38 |只看该作者

回复 9楼 jiantang2008 的帖子

将你的代码改为如下试一下了,我就是这么解决的呀
      global $conn;
  define ('XAJAX_DEFAULT_CHAR_ENCODING','gb2312');
      $objResponse = new xajaxResponse();
      mysql_query("set names gb2312")
  $rst_title = mysql_query("select * from xh_title where title='".mb_convert_encoding($val,"gb2312","UTF-8")."'",$conn) ;
  $zzz = "select * from xh_title where title='".$val."'";
  $objResponse->addAlert($zzz);
  while ($row = mysql_fetch_array ($rst_title)) {
        $objResponse->addAlert($row["id"]);
        $objResponse->addAlert($row["title"]);
    }
   
   return $objResponse;
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP