杏和接口service调试出现问号????????+????乱码如何解决 <TEST_ORDER_NAME>????????+????</TEST_ORDER_NAME>
请问 c# 有什么好解决方案?

解决方案 »

  1.   

     WebReference.service bll = new WebReference.service();
      string dataGBK = Encoding.GetEncoding("gb2312").GetString(Encoding.UTF8.GetBytes(bll.XHLisWebserviceFun(Data))); WebReference.service bll = new WebReference.service();
      string dataGBK = Encoding.GetEncoding("gbk").GetString(Encoding.UTF8.GetBytes(bll.XHLisWebserviceFun(Data)));
     WebReference.service bll = new WebReference.service();
      string dataGBK = Encoding.GetEncoding("utf-8").GetString(Encoding.UTF8.GetBytes(bll.XHLisWebserviceFun(Data)));均显示乱码
      

  2.   

    c#调用delphi开发的webservice接口,中文返回值为乱码(一个汉字返回???)
      

  3.   

    有的说是delphi 在编写 web server的时候 编码问题;
    主要设置控件 HttpSoapDispatcher 中的 option 将 soUTF8InHeader = True
    和 soDontSendEmptyNode = True 设置一下就可以了
      

  4.   

    string dataGBK = Encoding.GetEncoding("gb2312").GetString(Encoding.UTF8.GetBytes(bll.XHLisWebserviceFun(Data)));
    并不能实现你将 utf-8 编码的数据转换成 gb2312 编码的数据的目的
    否则 Encoding.Convert 就形同虚设了为了便于探察你所遇到的问题,你最好贴出 bll.XHLisWebserviceFun(Data) 的 base64 编码后的内容
      

  5.   

    //------------------------------------------------------------------------------
    // <auto-generated>
    //     此代码由工具生成。
    //     运行时版本:2.0.50727.8762
    //
    //     对此文件的更改可能会导致不正确的行为,并且如果
    //     重新生成代码,这些更改将会丢失。
    // </auto-generated>
    //------------------------------------------------------------------------------// 
    // 此源代码由 wsdl 自动生成, Version=2.0.50727.1432。
    // 
    namespace Demo {
        using System.Xml.Serialization;
        using System.Web.Services;
        using System.ComponentModel;
        using System.Web.Services.Protocols;
        using System;
        using System.Diagnostics;
        using System.Text;    
        /// <res/>
        [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")]
        [System.Diagnostics.DebuggerStepThroughAttribute()]
        [System.ComponentModel.DesignerCategoryAttribute("code")]
        [System.Web.Services.WebServiceBindingAttribute(Name="IXhlisWebservicebinding", Namespace="http://tempuri.org/")]
        public partial class IXhlisWebserviceservice : System.Web.Services.Protocols.SoapHttpClientProtocol {
            
            private System.Threading.SendOrPostCallback XHLisWebserviceFunOperationCompleted;
            
            /// <res/>
            public IXhlisWebserviceservice() {
                this.Url = "http://192.168.203.226:8880/Project2.dll/soap/IXhlisWebservice";
            }
            
            /// <res/>
            public event XHLisWebserviceFunCompletedEventHandler XHLisWebserviceFunCompleted;
            
            /// <res/>
            [System.Web.Services.Protocols.SoapRpcMethodAttribute("urn:WebserviceDemoIntf-IXhlisWebservice#XHLisWebserviceFun", RequestNamespace="urn:WebserviceDemoIntf-IXhlisWebservice", ResponseNamespace="urn:WebserviceDemoIntf-IXhlisWebservice")]
            [return: System.Xml.Serialization.SoapElementAttribute("return")]
            public string XHLisWebserviceFun(string Data) {
                object[] results = this.Invoke("XHLisWebserviceFun", new object[] {
                            Data});
               string strInfo = ((string)(results[0]));
               // string dataGBK = Encoding.GetEncoding("iso-8859-1").GetString(Encoding.UTF8.GetBytes(strInfo + "我是"));
               //return ConvertISO88591ToEncoding(strInfo, Encoding.GetEncoding("GB2312")) + "dd" + dataGBK;           return strInfo;
            }
            private string ecodingJava_C(String str)
            {
                Encoding utf8 = Encoding.UTF8;
                Encoding defaultCode = Encoding.Default;
                byte[] utf8Bytes = defaultCode.GetBytes(str);
                byte[] defaultBytes = Encoding.Convert(utf8, defaultCode, utf8Bytes);
                char[] defaultChars = new char[defaultCode.GetCharCount(defaultBytes, 0, defaultBytes.Length)];
                defaultCode.GetChars(defaultBytes, 0, defaultBytes.Length, defaultChars, 0);
                return new string(defaultChars);
            }
            private static string ConvertISO88591ToEncoding(string srcString, Encoding dstEncode)
            {            String sResult;            Encoding ISO88591Encoding = Encoding.GetEncoding("ISO-8859-1");
                Encoding GB2312Encoding = Encoding.GetEncoding("GB2312"); //这个地方很特殊,必须利用GB2312编码
                byte[] srcBytes = ISO88591Encoding.GetBytes(srcString);            //将原本存储ISO-8859-1的字节数组当成GB2312转换成目标编码(关键步骤)
                byte[] dstBytes = Encoding.Convert(GB2312Encoding, dstEncode, srcBytes);            char[] dstChars = new char[dstEncode.GetCharCount(dstBytes, 0, dstBytes.Length)];            dstEncode.GetChars(dstBytes, 0, dstBytes.Length, dstChars, 0);//利用char数组存储字符
                sResult = new string(dstChars);
                return sResult;        }         /// <res/>
            public System.IAsyncResult BeginXHLisWebserviceFun(string Data, System.AsyncCallback callback, object asyncState) {
                return this.BeginInvoke("XHLisWebserviceFun", new object[] {
                            Data}, callback, asyncState);
            }
            
            /// <res/>
            public string EndXHLisWebserviceFun(System.IAsyncResult asyncResult) {
                object[] results = this.EndInvoke(asyncResult);
                return ((string)(results[0]));
            }
            
            /// <res/>
            public void XHLisWebserviceFunAsync(string Data) {
                this.XHLisWebserviceFunAsync(Data, null);
            }
            
            /// <res/>
            public void XHLisWebserviceFunAsync(string Data, object userState) {
                if ((this.XHLisWebserviceFunOperationCompleted == null)) {
                    this.XHLisWebserviceFunOperationCompleted = new System.Threading.SendOrPostCallback(this.OnXHLisWebserviceFunOperationCompleted);
                }
                this.InvokeAsync("XHLisWebserviceFun", new object[] {
                            Data}, this.XHLisWebserviceFunOperationCompleted, userState);
            }
            
            private void OnXHLisWebserviceFunOperationCompleted(object arg) {
                if ((this.XHLisWebserviceFunCompleted != null)) {
                    System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                    this.XHLisWebserviceFunCompleted(this, new XHLisWebserviceFunCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
                }
            }
            
            /// <res/>
            public new void CancelAsync(object userState) {
                base.CancelAsync(userState);
            }
        }
        
        /// <res/>
        [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")]
        public delegate void XHLisWebserviceFunCompletedEventHandler(object sender, XHLisWebserviceFunCompletedEventArgs e);
        
        /// <res/>
        [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")]
        [System.Diagnostics.DebuggerStepThroughAttribute()]
        [System.ComponentModel.DesignerCategoryAttribute("code")]
        public partial class XHLisWebserviceFunCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
            
            private object[] results;
            
            internal XHLisWebserviceFunCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
                    base(exception, cancelled, userState) {
                this.results = results;
            }
            
            /// <res/>
            public string Result {
                get {
                    this.RaiseExceptionIfNecessary();
                    return ((string)(this.results[0]));
                }
            }
        }
    }