web.config文件里 <globalization requestEncoding="gb2312" responseEncoding="gb2312" fileEncoding="gb2312"/>
其中的某个页面里用jquery做自动提示效果,输入字母可得到想要提示结果,输入中文得不到提示的结果,估计是中文关键字变成了乱码在数据库里搜询不到了,该如何解决?
不用估计,你试下输入中文后得到的是什么!页面的编码是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" />
我一直都是这样设置的,没乱码过一次。
一、有没有查到记录你需要知道。比如通过跟踪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
你确定是编码的问题吗?
这个问题,我前段时间遇到的,情况和一样。
使用这个方法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');
});
}