首页 新闻 搜索 专区 学院

JQuery ajax提交 中文乱码如何解

1
悬赏园豆:30 [已关闭问题]

web.config文件里 <globalization requestEncoding="gb2312" responseEncoding="gb2312" fileEncoding="gb2312"/>
其中的某个页面里用jquery做自动提示效果,输入字母可得到想要提示结果,输入中文得不到提示的结果,估计是中文关键字变成了乱码在数据库里搜询不到了,该如何解决?

问题补充: context.Request.ContentEncoding = System.Text.Encoding.UTF8;
hyh的主页 hyh | 初学一级 | 园豆:142
提问于:2009-10-17 14:42
< >
分享
其他回答(3)
0

不用估计,你试下输入中文后得到的是什么!页面的编码是gb2312,还是UTF8?你使用的get还是post?

我学的是Java,不懂.NET,不过道理是相通的。

中文乱码出现的地方无非三处:页面、程序、服务器。

页面是被动的,由response控制。

程序端:

request.setCharacterEncoding("gb2312");//程序开始第一行

//N多行后

response.setCharacterEncoding("gb2312");//先设置responseEncoding。

PrintWriter out = response.getWriter();//输出

服务器的编码设置 server.xml<Connector port="8080" protocol="HTTP/1.1"
               maxThreads="150" connectionTimeout="20000"
               redirectPort="8443" URIEncoding="gb2312" />

我一直都是这样设置的,没乱码过一次。

liyuanyuan | 园豆:195 (初学一级) | 2009-10-17 17:43
0

一、有没有查到记录你需要知道。比如通过跟踪sql语句得知。

二、jquery编码函数了解不多,

笨办法是可以escape,可以参考escape()、encodeURI()、encodeURIComponent():

// javascript里发送中文

javascript 里用  encodeURI("中文String")   进行编码发送 // 地址栏里直接传送中文
若是在地址栏直接传送中文,则要进行两次转码  encodeURI(encodeURI("中文String"))// java中接收同时解码
//java中解码回来用   java.net.URLDecoder.decode("接收到的String","UTF-8")

http://www.jb51.net/article/16271.htm

http://www.cnblogs.com/downmoon/archive/2007/12/30/1021140.html

邀月 | 园豆:25475 (高人七级) | 2009-10-17 17:47
0

你确定是编码的问题吗?

rjzou | 园豆:478 (菜鸟二级) | 2009-10-17 21:15
0

这个问题,我前段时间遇到的,情况和一样。

使用这个方法unescape就可以了。

解决方案如下:

web.config

<globalization requestEncoding="gb2312" responseEncoding="gb2312"/>

aspx

 function LoadCSVFile(file) {
                RemoveTable();

                $.get(file, function(data) {
                    array = $.fn.csv()(unescape(data));

                    $.each(array, function(i) {
                        var row = String(this).split(" ");
                        if (row[0] != "") {
                            //replace multi space to one space
                            var reg = /\s+/g;
                            //replace space to comma
                            var arr = String(row[0].replace(reg, " ")).split(" ");
                            tableContent.append("<tr><td><span cblValue='" + arr[1] + "'>" +
                                                      "<input id='cbl_" + i + "'" + " type='checkbox' title='" + arr[0] + ":" + arr[1] + "' />" +
                                                      "<label for='cbl_" + i + "'>" + arr[0] + "</label>" +
                                                      "</span></td></tr>");
                        }
                    });
                    $('#tableContent tr:odd').css('background-color', '#ffc');
                });
            }

RicoRui | 园豆:3663 (老鸟四级) | 2009-10-23 13:54
你就看一下红色部分就可以了,其他可以忽略
支持(0) 反对(0) RicoRui | 园豆:3663 (老鸟四级) | 2009-10-23 13:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册