`
sbpya
  • 浏览: 605004 次
  • 性别: Icon_minigender_1
  • 来自: 杭州,长沙
社区版块
存档分类
最新评论

关于tomcat和weblogic服务中url传中文参数转码不统一的问题

阅读更多

原本开发环境用的服务器是tomcat6.0.18,其中有一个url中文参数从页面传入action类,然后跳到另一个jsp,结果发现是乱码,于是在action类中加了个强制转型:this.paraName = new String(paraName.getByte("GBK"),"ISO-8859-1"),再测试,OK了.以为大可放心了.

  没想到,用户部署环境为weblogic9,这下好了,这个强制转型就挂掉了,页面从action跳出到输出页面还是显示乱码,结果发现是这个强制转型出了问题,为了解决这两种服务器在参数转码正确问题,加入以下代码即可:

 

public static String getStringGBKEncode(String str) {  
  try {   
   byte[] bytes1 = str.getBytes("UTF-8");
   byte[] bytes2 = str.getBytes("ISO-8859-1");
   byte[] bytes3 = str.getBytes("Unicode");   
   if (str.equals(new String(bytes1))) {
    return new String(str.getBytes("GBK"),"UTF-8");
   }
   if (str.equals(new String(bytes2))) {
    return new String(str.getBytes("GBK"),"ISO-8859-1");
   }
   if (str.equals(new String(bytes3))) {
    return new String(str.getBytes("GBK"),"Unicode");
   }
  } catch (UnsupportedEncodingException e) {   
   e.printStackTrace();
  } 
  return str;
 }

 

此代码为在进行强制转码前先判断当前String的编码方式,再进行转码,才能保证转码正确!这样,不论在tomcat还是weblogic均可显示正确了.

此方法适合少量的url传中文参数的解决方法,如有多处需要转码,个人觉得还是编写拦截器统一转码或编写转码标签较好!

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics