科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件Weblogic的编码问题解决方案

Weblogic的编码问题解决方案

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在service的服务端,在输出string的时候进行转码

作者: 大龄青年 来源:CSDN 2008年1月13日

关键字: 解决方案 编码 Weblogic

  • 评论
  • 分享微博
  • 分享邮件
  开发环境:windows XP
                       jdk1.4.2
                      eclipse3.2.1 + myeclipse5.0
                      weblogic 8.16sp6
                     oracle9i

    服务器环境:linux
                            jdk1.4.2
                           weblogic 8.16sp6
                           oracle9i

 web service采用weblogic自带web service方式,服务发布通过web-services.xml配置发布,程序代码写完后在本地测试没有问题,java文件的编码格式是gbk。
 发布到服务器上后,问题来了,怎么中文都变成了乱码?第一想法是简单,转码,以前遇到乱码都是通过手工转码来解决的,但是这次不行了,可以想到的转码的方式都试了,还是不行,都要气炸了。最后发现一个怪异的问题:通过jsp页面直接调用java程序,java程序直接打印中文在jsp页面上,显示出来的还是乱码,java文件是gbk编码的,所以java文件本身绝对没有问题,jsp也是gbk的,并且ie浏览器察看jsp页面也是gbk的,看来问题不一定处在程序本身,最后终于发现英文系统,他的默认的java的运行环境是iso8859-1的。但是为什么之前转码一个转不过来呢,估计就是weblogic自己的那个web service 实现对soap消息做了什么处理,所以转码失败,又或者是本人太笨,转码少转了几种情况。
知道了这些就好办了,在网上查了一下文档。有两种处理方式,都可以解决问题:

    1. 在service的服务端,在输出string的时候进行转码:return new String(var.getBytes("gbk"),"iso-8859-1");在client端调用服务的时候也进行转码:String str = new String(myServicePort.sayHello().getBytes("iso-8859-1"),"gbk");
    2. 修改weblogic的启动参数:在startWebLogic.cmd中加入-Dweblogic.webservice.i18n.charset=gbk

终于搞定了,但是为了在不同的环境下都可以保证程序正确运行,推荐用第2种方式。

weblogic虽然是8错,能集成的东西都通吃,但是用起来问题还真多,现在还有好多东西都搞不懂。比如:
1、在weblogic下发布xfire作的web service,xfire通过***?WSDL方式访问服务的描述,这个同weblogic的冲突,疯狂报错。
2、用xmlbeans自带的工具生成xml的java类,在weblogic下调用会报错,用weblogic提供的工具生成就不会报错,太霸道了。
3、xfire和axis的webservice的client端可以通过多种方式相互访问xfire和axis的webservice,但是xfire和axis的webservice的client端只能通过特定的方式访问weblogic提供的webservice。

参考文档:http://coffey321.spaces.live.com/blog/cns!BC193786F4A1BDD1!454.entry(怪异的路径) 


查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章