<%@ page contentType="text/vnd.wap.wml" pageEncoding="utf-8" %><?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN" "http://www.wapforum.org/DTD/wml12.dtd">
<%response.setContentType("text/vnd.wap.wml;charset=utf-8") ;%> <wml>
<card id="login" title="Login Screen">
<p>
<br/>
用户名: <input name="LogonName" type="text" emptyok="false" value=""/>
<br/>
密码: <input name="LogonWord" type="password" emptyok="false" value=""/>
</p>
<do type="accept" label="登陆">
<go href="prohint.jsp" method="post">
<postfield name="username" value="$(LogonName)"/>
<postfield name="password" value="$(LogonWord)"/>
</go>
</do></card>
</wml>这里用post就没问题,用get就不行 为什么?prohint.jsp
<%@ page contentType="text/vnd.wap.wml" pageEncoding="utf-8"%><?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN" "http://www.wapforum.org/DTD/wml12.dtd">
<%response.setContentType("text/vnd.wap.wml;charset=utf-8") ;%>
<wml>
<head>
<meta http-equiv="Cache-Control" content="no-cache" />
</head>
<card id="main" title="提示">
<%
request.setCharacterEncoding("utf-8");
String username = request.getParameter("username");
out.println("model="+username);
String password = request.getParameter("password");
out.println("model="+password);
%>
</card>
</wml>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN" "http://www.wapforum.org/DTD/wml12.dtd">
<%response.setContentType("text/vnd.wap.wml;charset=utf-8") ;%> <wml>
<card id="login" title="Login Screen">
<p>
<br/>
用户名: <input name="LogonName" type="text" emptyok="false" value=""/>
<br/>
密码: <input name="LogonWord" type="password" emptyok="false" value=""/>
</p>
<do type="accept" label="登陆">
<go href="prohint.jsp" method="post">
<postfield name="username" value="$(LogonName)"/>
<postfield name="password" value="$(LogonWord)"/>
</go>
</do></card>
</wml>这里用post就没问题,用get就不行 为什么?prohint.jsp
<%@ page contentType="text/vnd.wap.wml" pageEncoding="utf-8"%><?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN" "http://www.wapforum.org/DTD/wml12.dtd">
<%response.setContentType("text/vnd.wap.wml;charset=utf-8") ;%>
<wml>
<head>
<meta http-equiv="Cache-Control" content="no-cache" />
</head>
<card id="main" title="提示">
<%
request.setCharacterEncoding("utf-8");
String username = request.getParameter("username");
out.println("model="+username);
String password = request.getParameter("password");
out.println("model="+password);
%>
</card>
</wml>
<Connector port="8080" protocol="HTTP/1.1"
maxThreads="150" connectionTimeout="20000"
redirectPort="8443" />
要设置编码? 那默认的的编码是什么?
maxThreads="150" connectionTimeout="20000"
redirectPort="8443" URIEncoding="utf8" />
加了,可以了 谢谢了那要统一字符编码的话 一般都哪里设置的 分别都表示什么作用 能详细说下吗?
if (value == null) value = "";
value = new String(value.getBytes("iso-8859-1"), "utf-8");
如果你设置了
<Connector ... URIEncoding="utf-8" ... />
则 request.getParameter("paramName") 就是 接收 GET 提交的参数后按 utf-8 解码的了
如果你设置了
<Connector ... useBodyEncodingForURI="true" ... />
则接收 GET 提交的参数后 使用哪个字符集解码,由页面编码决定
request.setCharacterEncoding("utf-8");
String value = request.getParameter("paramName");
if (value == null) value = "";
value = new String(value.getBytes("iso-8859-1"), "utf-8");
这种的话 post提交就不行了
都说是在没有改 默认配置的情况下了...结合自己实际情况. 平时也要避免用 GET 方式提交多字节字符.--------------------------------------如果改 <Connector ... /> 个人不建议使用
URIEncoding="utf-8" 这样来直接指定因为容器中可能布署多个应用, 也许有些应用是 UTF-8 的, 有些却是 GBK 的.
URIEncoding=" .... " 被定死了,就有些应用可能会出问题--------------------------------------改的话,个人建议使用
<Connector ... useBodyEncodingForURI="true" ... />
不管是 GET, 还是 POST
request.getParameter(...) 之前都先要使用 request.setCharacterEncoding(...)
结合自己实际情况. 平时也要避免用 GET 方式提交多字节字符. -------------------------------------- 如果改 <Connector ... /> 个人不建议使用
URIEncoding="utf-8" 这样来直接指定 因为容器中可能布署多个应用, 也许有些应用是 UTF-8 的, 有些却是 GBK 的.
URIEncoding=" .... " 被定死了,就有些应用可能会出问题 -------------------------------------- 改的话,个人建议使用
<Connector ... useBodyEncodingForURI="true" ... />
不管是 GET, 还是 POST
request.getParameter(...) 之前都先要使用 request.setCharacterEncoding(...)
[/Quote]嗯 知道了, 那一般开发过程中,不会修改服务器端的吧,
有时候必要,得去改...但是如果能避免需要修改,就尽量避免..如果你在设计中,能够避免用 GET Method 提交多字节字符, 那么你就不需要去改什么 URIEncoding 或者 useBodyEncodingForURI 了.
(QueryString 中一般也就传传一些类似于 ID,username,...之类的简单内容)能够避免就避免, 因为部署应用程序的时候, 不一定你能去碰 tomcat 的就好像租用 虚拟主机 吧 一般都没办法给你去碰容器配置吧
时,大家可以从地址栏里看到提交的参数,这是因为get方法传递是作为报文
头提交的,而pageEncoding对报文头是没有作用的,所以仍然按照 iso8859-1编码,才出现了刚才的乱码问题。而post提交的是form表单的内容,pageEncoding指定了它的编码,所以他会按照指定编码传递。这个应该就是原因了吧