Lotus教程、Java教程、Java虚拟机、Java软件综合开发社区

Lotus、Domino、Java、C#、Web、数据库综合开发教程、资料社区

.net调用java webService出现乱码的解决方案



Published by admin on 03月 31, 2010

在项目中需与.net的系统做接口,采用webservice方式实现,java系统通过xfire实现接口供.net调用,.net调用接口成功,但传递过来的汉字解析时却出现乱码;
 起初以为是字符集问题,确认.net使用gb2312字符集,java使用gbk,通过String content = new String (input.getBytes( “gb2312″), “GBK”); 进行转换未果,有人建议在Java中使用ISO-8859-1编码作为中转,将GBK编码下的字符串转换为UTF-8的字符串,然后以byte数组形式传递出来,但是始终没有能解码过来

网上搜索问题.得知.根本的原因在于”utf-8在.net和java里的编码不同

通过如下方法解决:

Java程序:

// 将 s 进行 BASE64 编码

public static String getBASE64(String s) { if (s == null) return null; return (new sun.misc.BASE64Encoder()).encode( s.getBytes() ); }

// 将 BASE64 编码的字符串 s 进行解码
public static String getFromBASE64(String s) {
if (s == null) return null;
BASE64Decoder decoder = new BASE64Decoder();
try { byte[] b = decoder.decodeBuffer(s); return new String(b); } catch (Exception e) { return null; }
}

NET程序:

 /// <summary>
        /// 编码
        /// </summary>
        /// <param name=”code_type”></param>
        /// <param name=”code”></param>
        /// <returns></returns>
        public static string EncodeBase64(string codeType, string code)
        {
            string encode = “”;
            byte[] bytes = Encoding.GetEncoding(codeType).GetBytes(code);
            try
            {
                encode = Convert.ToBase64String(bytes);
            }
            catch
            {
                encode = code;
            }
            return encode;
        }

        /// <summary>
        /// 解码
        /// </summary>
        /// <param name=”code_type”></param>
        /// <param name=”code”></param>
        /// <returns></returns>
        public static string DecodeBase64(string codeType, string code)
        {
            string decode = “”;
            byte[] bytes = Convert.FromBase64String(code);
            try
            {
                decode = Encoding.GetEncoding(codeType).GetString(bytes);
            }
            catch
            {
                decode = code;
            }
            return decode;
        }


下一篇文章:Ext JS 3.2.0发布 »

【版权说明】:本网页上有部分内容来源于网上收集,但不能保证资料的完整性和准确性,仅提供参考和学习。如有侵权请立即通知我们,我们将立即删除,谢谢合作!

Comments are closed.