c# 杏和接口service调试出现问号????????+????乱码如何解决

东边的小山 2018-08-31 11:43:50
杏和接口service调试出现问号????????+????乱码如何解决 <TEST_ORDER_NAME>????????+????</TEST_ORDER_NAME>
请问 c# 有什么好解决方案?
...全文
603 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
东边的小山 2018-09-12
  • 打赏
  • 举报
回复
//------------------------------------------------------------------------------
// <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;


/// <remarks/>
[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;

/// <remarks/>
public IXhlisWebserviceservice() {
this.Url = "http://192.168.203.226:8880/Project2.dll/soap/IXhlisWebservice";
}

/// <remarks/>
public event XHLisWebserviceFunCompletedEventHandler XHLisWebserviceFunCompleted;

/// <remarks/>
[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;

}

/// <remarks/>
public System.IAsyncResult BeginXHLisWebserviceFun(string Data, System.AsyncCallback callback, object asyncState) {
return this.BeginInvoke("XHLisWebserviceFun", new object[] {
Data}, callback, asyncState);
}

/// <remarks/>
public string EndXHLisWebserviceFun(System.IAsyncResult asyncResult) {
object[] results = this.EndInvoke(asyncResult);
return ((string)(results[0]));
}

/// <remarks/>
public void XHLisWebserviceFunAsync(string Data) {
this.XHLisWebserviceFunAsync(Data, null);
}

/// <remarks/>
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));
}
}

/// <remarks/>
public new void CancelAsync(object userState) {
base.CancelAsync(userState);
}
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")]
public delegate void XHLisWebserviceFunCompletedEventHandler(object sender, XHLisWebserviceFunCompletedEventArgs e);

/// <remarks/>
[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;
}

/// <remarks/>
public string Result {
get {
this.RaiseExceptionIfNecessary();
return ((string)(this.results[0]));
}
}
}
}
xuzuning 2018-09-10
  • 打赏
  • 举报
回复
string dataGBK = Encoding.GetEncoding("gb2312").GetString(Encoding.UTF8.GetBytes(bll.XHLisWebserviceFun(Data)));
并不能实现你将 utf-8 编码的数据转换成 gb2312 编码的数据的目的
否则 Encoding.Convert 就形同虚设了

为了便于探察你所遇到的问题,你最好贴出 bll.XHLisWebserviceFun(Data) 的 base64 编码后的内容
东边的小山 2018-09-10
  • 打赏
  • 举报
回复
有的说是delphi 在编写 web server的时候 编码问题;
主要设置控件 HttpSoapDispatcher 中的 option 将 soUTF8InHeader = True
和 soDontSendEmptyNode = True 设置一下就可以了
东边的小山 2018-09-10
  • 打赏
  • 举报
回复
c#调用delphi开发的webservice接口,中文返回值为乱码(一个汉字返回???)
东边的小山 2018-09-03
  • 打赏
  • 举报
回复
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)));

均显示乱码
missing_sprite 2018-08-31
  • 打赏
  • 举报
回复
有没有更详细的

110,570

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧