c# 和 delphi 的 base64 編碼一致問題 webservice

c# 和 delphi 的 base64 編碼一致問題 webservice

因爲項目須要爲包括c/s和b/s的多個平臺提供統一業務邏輯,寫個webservice來完成這個任務,經過webservice封裝業務邏輯,爲其餘平臺提供接口,以供調用,因而用delphi寫一個webservice,起初沒有任何採用任何編碼,固然在調用的時候delphi客戶端能夠正常傳輸數據,c#網頁部分調用倒是亂碼,確定是兩種語言的編碼方式問題,引發的亂碼,緣由有了,最終也沒有想到解決的辦法。因此想兩端提供一種統一的編碼,經過編碼和解碼來達到編碼方式的統一,這樣應該就不會有亂碼的問題了吧,我選擇base64編碼方式,base64在網絡上良好的性能,這是知足這個所須要的,又折騰了一陣子,終於完成了,各個平臺數據的統一,測試代碼以下:

1 delphi部分:web

unit Unit1;c#

interface網絡

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,EncdDecd;性能

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
Edit3: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;測試

var
Form1: TForm1;this

implementation編碼

{$R *.dfm}spa

procedure TForm1.Button1Click(Sender: TObject);
var s:AnsiString;
begin
s:=edit1.text;
edit2.Text:= EncodeString((s));code

// 超越軟件 http://www.cyhlw.com
end;orm

procedure TForm1.Button2Click(Sender: TObject);
begin
edit3.Text:=DecodeString(edit2.text)
end;

end.

2c# 部分:

using System;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Text;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

//Response.ContentEncoding = System.Text.Encoding.GetEncoding( "GB2312" );


}
protected void Button1_Click(object sender, EventArgs e)
{

string str="";


localhost.IIHelloservice oserver = new localhost.IIHelloservice();
str=oserver.sayHello("超越軟件 http://www.cyhlw.com");
//localhost.WebService1 oService = new localhost.WebService1();
//Label1.Text = oService.About();
this.TextBox1.Text = str;

byte[] bytes = System.Convert.FromBase64String(str);
str = "";
str = Encoding.Default.GetString(bytes);
TextBox2.Text = str;
//TextBox1.Text=Encoder.get
//byte[] bytes
//this.TextBox1.Text = System.Convert.FromBase64String(str);

}}

相關文章
相關標籤/搜索