日期:2014-05-17  浏览次数:20890 次

JSP POST传参(乱码) 为何是ISO8859_1
A 页面:
HTML code

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

<% response.setCharacterEncoding("UTF-8"); %>

<meta http-equiv="content-type" content="text/html; charset=UTF-8" />

<form action="B.jsp" method="post">
    <input type="submit" name="submit" value="中文" />
</form>




B 页面:
HTML code

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

<% request.setCharacterEncoding("UTF-8"); %>

<meta http-equiv="content-type" content="text/html; charset=UTF-8" />

<!-- 请问 #P1 为何乱码 -->
<p id="p1"><%=request.getParameter("submit")%></p>

<!-- 请问 #P2 为何要重建字符串?以前听说POST传参只需设置request编码,为什么是ISO8859_1?-->
<p id="p2"><%=new String(request.getParameter("submit").getBytes("ISO8859_1"), "UTF-8")%></p>



------解决方案--------------------
为什么是8859-1

request.getParameter("submit")就可以了啊。
------解决方案--------------------
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

<% request.setCharacterEncoding("UTF-8"); %>

<meta http-equiv="content-type" content="text/html; charset=UTF-8" />


你首先要搞清楚这几个编码的作用

http://apps.hi.baidu.com/share/detail/33081081
------解决方案--------------------
引用:
<%--
我的设置不正确吗?编码作我是知道的,我的问题是:Method=POST发送,接收数据时为什么不是UTF8,而是ISO8859_1...
--%>

<!-- 请问 #P2 为何要重建字符串?以前听说POST传参只需设置request编码,为什么是ISO8859_1?-->
<p id="p2"><%=new String(request.getParameter("submit").getBytes("ISO8859_1"), "UTF-8")%></p>

如果不指定编码的话,默认编码就是ISO8859-1。

看下这篇文章:
http://cosmo1987.iteye.com/blog/1116959
------解决方案--------------------
浏览器会先转到tomcat中 tomcat 配置文件中的默认编码格式 就是 iso88591
------解决方案--------------------
+1
探讨

浏览器会先转到tomcat中 tomcat 配置文件中的默认编码格式 就是 iso88591

------解决方案--------------------
在service.xml修改编码格式
 <Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" useBodyEncodingForURI="true"/>
------解决方案--------------------
探讨
浏览器会先转到tomcat中 tomcat 配置文件中的默认编码格式 就是 iso88591