<%@ 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>

解决方案 »

  1.   

    是不是tomcat6 的 server.xml
     <Connector port="8080" protocol="HTTP/1.1" 
                   maxThreads="150" connectionTimeout="20000" 
                   redirectPort="8443" /> 
    要设置编码?  那默认的的编码是什么?
      

  2.   

     <Connector port="8080" protocol="HTTP/1.1" 
                   maxThreads="150" connectionTimeout="20000" 
                   redirectPort="8443" URIEncoding="utf8" />
    加了,可以了   谢谢了那要统一字符编码的话  一般都哪里设置的  分别都表示什么作用  能详细说下吗?
      

  3.   

    默认的是 iso-8859-1所以,你如果没有改默认配置,接收 GET 提交的参数可以是String value = request.getParameter("paramName");
    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");
      

  4.   

     所以,你如果没有改默认配置,接收 GET 提交的参数可以是 String value = request.getParameter("paramName");
     if (value == null) value = "";
     value = new String(value.getBytes("iso-8859-1"), "utf-8");

    这种的话 post提交就不行了
      

  5.   


    都说是在没有改 默认配置的情况下了...结合自己实际情况. 平时也要避免用 GET 方式提交多字节字符.--------------------------------------如果改 <Connector ...  /> 个人不建议使用
    URIEncoding="utf-8" 这样来直接指定因为容器中可能布署多个应用, 也许有些应用是 UTF-8 的, 有些却是 GBK 的.
    URIEncoding=" .... " 被定死了,就有些应用可能会出问题--------------------------------------改的话,个人建议使用
    <Connector ...  useBodyEncodingForURI="true" ... />
    不管是 GET, 还是 POST
    request.getParameter(...) 之前都先要使用 request.setCharacterEncoding(...)
      

  6.   

    服务器编码设置没?最好全部统一为UTF8
      

  7.   



     结合自己实际情况. 平时也要避免用 GET 方式提交多字节字符.
     -------------------------------------- 如果改  <Connector ...  /> 个人不建议使用
     URIEncoding="utf-8" 这样来直接指定 因为容器中可能布署多个应用, 也许有些应用是 UTF-8 的, 有些却是 GBK 的.
     URIEncoding=" .... " 被定死了,就有些应用可能会出问题 -------------------------------------- 改的话,个人建议使用
      <Connector ...  useBodyEncodingForURI="true" ... />
     不管是 GET, 还是 POST
     request.getParameter(...) 之前都先要使用 request.setCharacterEncoding(...)
    [/Quote]嗯  知道了, 那一般开发过程中,不会修改服务器端的吧,
      

  8.   


    有时候必要,得去改...但是如果能避免需要修改,就尽量避免..如果你在设计中,能够避免用 GET Method 提交多字节字符, 那么你就不需要去改什么 URIEncoding 或者 useBodyEncodingForURI 了.
    (QueryString 中一般也就传传一些类似于 ID,username,...之类的简单内容)能够避免就避免, 因为部署应用程序的时候, 不一定你能去碰 tomcat 的就好像租用 虚拟主机 吧           一般都没办法给你去碰容器配置吧
      

  9.   

    Tomcat 默认是 Iso8859-1,所以在国际化的时候最好用UTF-8
      

  10.   

    pageEncoding这个只对post起作用。get方法提交 
    时,大家可以从地址栏里看到提交的参数,这是因为get方法传递是作为报文 
    头提交的,而pageEncoding对报文头是没有作用的,所以仍然按照 iso8859-1编码,才出现了刚才的乱码问题。而post提交的是form表单的内容,pageEncoding指定了它的编码,所以他会按照指定编码传递。这个应该就是原因了吧  
      

  11.   

    呵呵   很感谢 wcwtitxu  啊