日期:2014-05-18  浏览次数:20780 次

100分求助!jsp+wap中文传输问题
HTML code
 <%response.addHeader("Cache-Control", "no-cache"); 
response.addHeader("Expires", "Thu, 01 Jan 1970 00:00:01 GMT");%> <?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<%@ page language="java" import="java.util.*" contentType="text/vnd.wap.wml; charset=gb2312" pageEncoding="gb2312"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>
<% response.setContentType("text/vnd.wap.wml;charset=gb2312"); %>
<% request.setCharacterEncoding("UTF-8"); %>
<% HashMap <String,String> configMap =(HashMap)request.getAttribute("configMap"); %>
[color=#FF0000] <wml>
<card id="main" title="UUWap娱乐">
<p>
<br/>
搜索: <input name="key" size="5"/> <anchor>查询
<go href="wapAction.do" method="post">
<postfield name="action" value="search"/>
<postfield name="key" value="$(key)"/>
</go>
</anchor> <a href="/UUWap/wapAction.do?action=search&amp;key=$(key)">提交 </a>
</p>
</card>
</wml>[/color]


用上面的方法传递key到Struts的action中的时候为乱码,Struts中我使用了gb2312的过滤器,并且还有一个奇怪的现象,我用winwap的时候和用opera的时候鼠标放到提交上面,显示的链接后面的key的值不同~~~~~
因为我现在是做搜索,所以中文通过url怎么也传不过去~~~求助啊!!!明天就要测试了!!!!

------解决方案--------------------
你把那些?后面的参数放在hidden里面传过去。
------解决方案--------------------
new String(str.getBytes("ISO-8859-1"),"utf-8")
------解决方案--------------------
jsp 乱码解决方法,get和post提交时它的编码处理方式不同,post(二进制方式提交)加个过滤器就可以了,而get(附加在url后)过滤无法处理,解决办法很简单tomcat目录下config-server.xml中
加入URIEncoding="utf-8" 或 "gbk" 这一段代码就OK了。

完整的如下
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="utf-8" />

另一种解决办法使用String类的构造方法转换字符集 (不过这个方法很麻烦)
String name = new String(request.getParameter("name").getBytes("iso-8859-1"),"utf-8");

我也做搜索 做的时候也遇到过 这是我当时的解决办法
------解决方案--------------------
学习了,原来url用过滤器不管用,难怪当时我用过滤器 有能行有的不行
------解决方案--------------------
支持4楼.
同时,wap url传参,最好不要用中文,就算要用,最好是先进行编码.
当时分别用asp和java开发wap都吃了这种苦.所以尽量避免这种传值.
------解决方案--------------------
key=$(key)">


url传参数之前要UrlEncode一下,不过有个简单的方法,如果你用的是tomcat,那么修改server.xml,修改Connector设置,
给这个组件添加一个属性:URIEncoding="utf-8"。

如<Connector port="8080" maxHttpHeaderSize="8192" 

maxThreads="150" minSpareThreads="25" maxSpareThreads="75"