浏览 3696 次
锁定老帖子 主题:wap开发中中文问题的解决
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2004-08-10
最后修改:2010-12-09
下面这句话是从网上摘录的,仅供参考的:
JSP中中文的解决: 中国移动加入以下几句后,页面中可以直接写中文,不用转换,提交的中文直接request.getParameter("")获得,不用转换 <%@ page contentType="text/vnd.wap.wml;charset=gb2312"%> <%response.setContentType("text/vnd.wap.wml;charset=UTF-8");%> <%request.setCharacterEncoding("UTF-8");%> 中国联通加入以下几句后,页面中可以直接写中文,不用转换,提交的中文直接request.getParameter("")获得,不用转换 <%@ page contentType="text/vnd.wap.wml;charset=gb2312"%> <%request.setCharacterEncoding("UTF-8");%> 操作系统win2000,Web Server resin(或tomcat) 都是从实践中摸索出来的,业务已上线,没问题。 本人解决方案: (1)在wml文件中定义为: <?xml version="1.0" encoding="UTF-8"?> (2)对提交数据采用post传递 <go href="/wapapp/servlet_wap" method="post"> <!-- go href="/servlet/wap86test" --> <postfield name="serviceID" value="0002"/> <postfield name="phone" value="$(phone:e)"/> <postfield name="passwd" value="$(passwd:e)"/> </go> (3)后台转换 移动——> 在servlet里面的doget和dopost方法设置 request.setCharacterEncoding("UTF-8"); response.setContentType(Const.CONTENT_TYPE);//Const.CONTENT_TYPE为:text/vnd.wap.wml;charset=UTF-8 ①post提交处理表单: 一般都是直接request.getParameter("xxx")取过来的就是中文了,不需要再进行转码; 如增加成员 增加成员的post代码为: <do type="accept" label="确定"><go href="/wapapp/servlet_wap" method="post" > <postfield name="serviceID" value="0207"/> <postfield name="groupname" value="按时的发射点222"/> <postfield name="groupcode" value="4"/> <postfield name="aphone" value="$aphone"/> <postfield name="aname" value="$(aname:e)"/> </go></do> 在处理编号为”0207“的程序块中,对获得的参数是这样来处理的 String groupcode = request.getParameter("groupcode"); String groupName = request.getParameter("groupname"); String ctcPhone = request.getParameter("aphone"); String ctcName = request.getParameter("aname"); ctcName = ctcName.replaceAll(" ", ""); ctcName = ctcName.replaceAll(" ", ""); if (!UserType.equals(SysChinaMobile)) {//移动的话直接getparameter的就是中文,而联通的却不是,所以需要转码 try { groupName = WapUtil.decode(groupName, "UTF-8"); ctcName = WapUtil.decode(ctcName, "UTF-8"); } catch (Exception e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. out.println(returnPrevPage(strErrosOnServerCallAdmin)); } } ②get提交的url参数: 如果是通过get方式,或者是通过url来传递参数的话就不能用decode这个方法来实现转码,而是用togbk这个方法来实现; 而且如果是在servlet里面打印wml页面,码制转换也只能用togbk这个方法; 如:显示个组信息首页面 请求显示修改组的页面url为:/wapapp/servlet_wap?serviceID=0212&groupcode=6&groupname=%B0%B4%CA%B1%B5%C4%B7%A8333 在处理编号为”0212“的程序块中,对获得的参数是这样来处理的 String groupcode = request.getParameter("groupcode"); String groupname = request.getParameter("groupname"); try { groupname = WapUtil.togbk(groupname); groupcode = WapUtil.togbk(groupcode); }catch (Exception e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. out.println(returnPrevPage(strErrosOnServerCallAdmin)); } 联通——> 在servlet里面的doget和dopost方法设置 response.setContentType(Const.CONTENT_TYPE);//Const.CONTENT_TYPE为:text/vnd.wap.wml;charset=UTF-8 ①post提交处理表单: 需要调用decode方法进行转码; ②get提交的url参数: 需要调用togbk方法进行转码 思考:也许这不是联通与移动的问题,也许是tomcat在不同操作系统上的原因导致; Waputil中最重要的几个方法: WapUtil.toUrl(String gbkStr) :如果有中文参数,需要用此方法转换 WapUtil.gbk2unicode(String gbkStr):将中文转成utf-8格式的文字,显示在页面上; WapUtil.togbk(String Utfstr):将utf格式的文字转成gbk格式,用于后台处理; WapUtil.decode(String s, String encoding):将指定码制格式的文字转成gbk格式,用于后台处理; 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |