读书人

Delphi调用C#写的WebService的老有关

发布时间: 2012-03-20 14:01:11 作者: rapoo

Delphi调用C#写的WebService的老问题
我在Delphi调用C#写的Webservice的时候出现了这样一个问题,就是我传汉字参数到服务端的时候会变成乱码.

比如我传入:快快乐乐500年快快乐乐500年,服务端写进数据库里的竟然是:快快乐乐500年快快乐?00年
注:
1:以前我发现传汉字的过去的时候会变成乱码所以我在传参数的时候会有首尾各加一个字符,到服务端再去掉,就上面那个参数我传进去的其实是'c快快乐乐500年快快乐乐500年c'.
2:我已经设置了HttpRIO.HTTPWebNode.UseUTF8InHeader:=True;
3:在接口文件中我也填加了InvRegistry.RegisterInvokeOptions(TypeInfo(WebServiceSoap),ioDocument);不填加好像传过去的参数都成空值了.
4:我试了把HttpRio.Converter.Encoding设置成utf-8,gb2312也一样不行.
5:发现有人汉字后面跟数字就不会变成乱码,而有的会.

希望高手们能帮帮我,谢谢.

[解决办法]
看看web端的字符编码格式
[解决办法]
编码的问题
[解决办法]
刚才测试了一下可能是服务程序(C#程序)没有处理好。

C# Web Service程序代码

C# code
using System;using System.Data;using System.Web;using System.Collections;using System.Web.Services;using System.Web.Services.Protocols;using System.ComponentModel;using System.IO;using System.IO.IsolatedStorage;using System.Text;namespace WebService3{    /// <summary>    /// Summary description for Service1    /// </summary>    [WebService(Namespace = "http://tempuri.org/")]    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]    [ToolboxItem(false)]    public class Service1 : System.Web.Services.WebService    {        [WebMethod]        public string HelloWorld()        {            return "Hello World,其中有中文字7个,ha ha!";        }        [WebMethod]        public void  UploadString(String Value )        {                        FileStream F = new FileStream("c:\\test.txt", FileMode.CreateNew );            Byte[] Bs;            Bs = Encoding.GetEncoding(0).GetBytes(Value);            F.Write(Bs, 0, Bs.GetLength(0));            F.Close();        }    }} 

读书人网 >.NET

热点推荐