前台用的是html页面:
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
....
var url = "addBlog.do?&blogcontent=中文测试";
url = encodeURI(url); //加不加这个后台打出来的都是4个问号
//url = encodeURI(encodeURI(url)); //这样写后台会报500错误
alert(url);
request.open("post",url,true);
request.onreadystatechange = addBlogReturn;
request.send(null);后台:
String blogcontentTemp = request.getParameter("blogcontent");
String blogcontent = new String(blogcontentTemp.getBytes("ISO-8859-1"),"UTF-8");
System.out.println(blogcontent); //打出来的是4个问号也使用了servlet过滤器,编码是UTF-8
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
}
....
为什么还是乱码呢??快崩溃了
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
....
var url = "addBlog.do?&blogcontent=中文测试";
url = encodeURI(url); //加不加这个后台打出来的都是4个问号
//url = encodeURI(encodeURI(url)); //这样写后台会报500错误
alert(url);
request.open("post",url,true);
request.onreadystatechange = addBlogReturn;
request.send(null);后台:
String blogcontentTemp = request.getParameter("blogcontent");
String blogcontent = new String(blogcontentTemp.getBytes("ISO-8859-1"),"UTF-8");
System.out.println(blogcontent); //打出来的是4个问号也使用了servlet过滤器,编码是UTF-8
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
}
....
为什么还是乱码呢??快崩溃了
解决方案 »
- 望高手帮忙
- struts2 hibernate操作数据库问题 (在线等着结贴)
- 关于下载的问题。
- 为什么一使用<html:form>就提示java.lang.NullPointerException: Module 'null' not found.
- 求助:jsp上string型變量傳入動態form中arraylist的問題
- 请问大侠编译错误: Error #: 300 : method handlePageException(java.lang.Throwable) not found in class javax.servlet.jsp.PageContex
- 关于jsp的菜鸟问题,急........................
- 动态下拉框问题。请教大家。由下拉框这个页跳到另外一个页。如果点ie的后退。则原来动态生成的下拉框没了。改怎么办.(付原代码)谢谢大家
- 急!如何在下拉式列表的onchange()事件中查询数据库?
- (!!!) 在servlet中包含另一个servlet程序如何实现,除了用RequestDispatcher dispatcher=request.getServletContext().getRequestDis
- 取出option的值并传到下一个页面
- 从网站上下载了jsp整站源码,请问如何调试啊?
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
var url = "addBlog.do";var params = [];
params.push("blogcontent", encodeURIComponent("中文测试"));
params.push("param1", encodeURIComponent("字串二"));
params.push("param2", encodeURIComponent("字串三"));
// 可加入多个参数...request.open("POST", url, true);
request.onreadystatechange = addBlogReturn;
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
request.send(params.join("&"));
request.setCharacterEncoding("UTF-8");
String blogcontent = request.getParameter("blogcontent");
// ...
var params = [];
params.push("blogcontent=" + encodeURIComponent("中文测试"));
params.push("param1=" + encodeURIComponent("字串二"));
params.push("param2=" + encodeURIComponent("字串三"));
前台两遍encodeURI
后台一遍decode就齐了
前台发送请求之前得设置一下编码方式:request.setCharacterEncoding("UTF-8");
如
<Connector port='8080' protocol='HTTP/1.1'
connectionTimeout='20000'
redirectPort='8443' URIEncoding='UTF-8' />