打印

中文表单提交的问题(已看过已有的帖,但解决不了)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">

<%@ page contentType="text/vnd.wap.wml;charset=UTF-8" %>

<anchor>
<bean:message key="index.register" />
<go href="register.do" method="post">
<postfield name="realname" value="$(realname)" />
</go>
</anchor>

我已经认真看过本论坛上与此有关的帖子了,但还是解决不了这个问题。请大家给我指点一下吧。大家好像用的都是ASP或PHP,我这个是用Java的。

问题描述:
1)在手机模拟器上一切正常。但实际用Nokia手机测试时,realname输入中文时,发现postfield部分无论写的是$(realname)还是$(realname:e),在服务器端收到的数据是一样的。

2)在服务器端收到提交的realname值后,无论是直接打印,还是先调用URLDecoder.decode(realname)或URLDecoder.decode(realname,"UTF-8")或URLDecoder.decode(realname,"GB2312"),都得不到原来输入的中文。
我JAVA基础不是很牢,URLDecoder函数没用过,不知道怎么用,但我自己编了个解码的
可以把从网页传过来的,正确显示汉字,希望对你有用
代码:
public String doEncoding(String code)
           throws ServletException,IOException,DocumentException,UnsupportedEncodingException{
              logger.info("EncodeToUTF.doEncoding is begin...");
              String str = new String(code.getBytes("ISO-8859-1"),"UTF-8");
              logger.debug("str="+str+";str.length="+str.length());              
              byte[] abc = str.getBytes("UTF-8");
              StringBuffer strbuf = new StringBuffer();
              System.out.println("abc.length"+abc.length);
           for(int i=0;i<abc.length;i++){
            //查看UTF-8编码,通过UTF-8判断是汉字还是英文和数字          
               logger.debug("abc["+i+"]="+abc[i]);
                  if(abc[i]<0){
                    String hex = Integer.toHexString((int)abc[i]);
                    strbuf.append("%").append(hex.substring(6));
                  }else if(abc[i]>0){
                         strbuf.append(code.charAt(i));
                  }
           }
              logger.info("strbuf="+strbuf.toString());
              return strbuf.toString();
       }
如果是jsp的话,在传递中文的时候,应该是iso8859-1的。
如果用纯wml传递中文好象不需要转码

你试试吧,JAVA传递中文,这个东西没有什么好办法,就那几个编码,试试就出来了
多谢楼上两位的指点。问题总算解决了。cyj210,感谢你帖出自己的代码。

TOP

还在为头像烦恼?还在为不能关注好友动态烦忧?快来蓝色理想家园吧!