网银在线支付接口的返回值的编码转换
今天调试了一下网银在线的接口,结果发现返回值中的汉字(如支付银行、支付状态)全是乱码,想来是编码问题,打客服电话,居然是技术不上班,所谓7*24小时的服务,就是7*24小时有客服接电话(接电话有什么用,啥问题都解决不了),郁闷啊。
还是GOOGLE是最好的老师,搜了一下,发现有人说返回的是GB2312的码,有人说是GBK的。那就只好都试试了,事实证明是GBK的。
于是写了段代码,对网银在线POST过来的支付结果数据进行处理:
StreamReader sr = new StreamReader(Request.InputStream, Encoding.GetEncoding(936));
string query = sr.ReadToEnd();
System.Collections.Specialized.NameValueCollection reqResult = HttpUtility.ParseQueryString(query, Encoding.GetEncoding(936));
v_pstring = reqResult["v_pstring"];
v_pmode = reqResult["v_pmode"];