BS端提供的方法签名JointInquiry(string,string)(添加Web引用之后由.NET自动生成的方法),字符串参数传递的是英文字符串或数字字符串时,没有问题,可以操作数据库;但是如果使用中文字符串作为方法参数,则在BS端获取的是一串乱码,无法进行更多操作。
我们一直猜想是Java与C#的数据类型和编码格式不一致的问题,但是还是找不出真正的原因。
请求高手解释原因并提供参考解决方案谢谢!

解决方案 »

  1.   

    统一编码,比如都采用utf-8编码
      

  2.   

    孟子说的对,应该把java的webservice编码和.NET的编码都改成utf-8,
      

  3.   

    事实上真正的UTF-8编码格式的字符串到底是怎么样的我自己也还不知道,网上流传了好多种做法,下面三种我试过都不行:        private string ToUTF8(string sText)
            {
                Encoding enc = Encoding.GetEncoding("utf-8");            byte[] buffer = enc.GetBytes(sText);            string sRlt = String.Empty;            foreach (byte item in buffer)
                {
                    sRlt += string.Format("%{0:X}", item);
                }
                return sRlt;
            }        public string ToUtf82(string content)
            {
                Encoding db2312E = Encoding.GetEncoding("gb2312");            Encoding utf8E = Encoding.UTF8;            byte[] db2312Bytes = db2312E.GetBytes(content);            byte[] utf8Bytes = Encoding.Convert(db2312E, utf8E, db2312Bytes);            char[] utf8Chars = new char[utf8E.GetCharCount(utf8Bytes, 0, utf8Bytes.Length)];            utf8E.GetChars(utf8Bytes, 0, utf8Bytes.Length, utf8Chars, 0);            string utf8string = new string(utf8Chars);            return utf8string;
            }        private string ToUTF83(string sText)
            {
                byte[] buffer = Encoding.UTF8.GetBytes(sText);            string sRst = Encoding.UTF8.GetString(buffer);            return sRst;
            }不知道到底是怎么回事,还请高手帮忙解释一下。谢谢