PHP那边是GB2312编码,而C#这边的默认编码是UTF-8,WEBSERVICE发送数据是以UTF-8发送的
问题来了,如果GB2312转为UTF-8,不管是显式还是隐式,都会出现乱码
于是将GB2312转为BASE64,收到以后再转回GB2312,才解决
这样做,实际上,数据经历了 GB2312--BASE64--UTF8--发送--接收--UTF8--BASE64-GB2312 这么个转换过程,因为BASE64只有英文字符,所以与UTF8互转不会出现乱码,而BASE64与GB2312互转,也不会出现乱码
编解码程序如下:
public static string DecodeBase64(string code)//解码 base64->gb2312
{
string sdecode = "";
byte[] sconverted = Convert.FromBase64String(code);
try
{
//sdecode = ASCIIEncoding.UTF8.GetString(sconverted); --这是转UTF-8
sdecode = ASCIIEncoding.GetEncoding("gb2312").GetString(sconverted);//这是转gb2312
}
catch
{
sdecode = code;
}
return sdecode;
}
public static string EncodeBase64(string code)//编码
{
string sencode = "";
byte[] sconverted = Encoding.Default.GetBytes(code);
try
{
sencode = Convert.ToBase64String(sconverted);
}
catch
{
sencode = code;
}
return sencode;
}