问题描述
目前网站使用"utf-8"编码,我使用WinForm的WebRequest在POST数据的时候,已经对需要POST的数据中的带中文的值先使用UTF8进行编码,编码后和服务器一致(之前用Http拦截到POST的数据),但是服务器收到后存进数据库,显示出来的时候就是乱码了。我在对方的网站上直接填写的表单后,显示出来的却不会乱码,可能我表达得不清楚,就是说我发送出去前,肯定对数据做了UTF-8的编码,且可以确定如果通过IE来填写表单并提交,IE也是对其中的中文进行UTF8编码后再发送给服务器,那么是什么原因可能导致我使用Winform来模拟提交和用IE8提交不同的方式来提交相同的数据,结果对方网站收到的就是乱码而使用IE来提交的时候却不会乱码呢?很纠结。DimpostAsString="verifycode=&loginNameCache="+userName+"&from=&xm="+System.Web.HttpUtility.UrlEncode(xm,System.Text.Encoding.UTF8).ToUpper+"&gender="+sex+"&credentialType=SFZ&credentialNumberCache=&credentialNumber_ajax_res=0&credentialNumber="+credentialNumber+"&nickname="+System.Web.HttpUtility.UrlEncode(xm,System.Text.Encoding.UTF8).ToUpper+"&birthday="+Mid(credentialNumber,7,4)+"-"+Mid(credentialNumber,11,2)+"-"+Mid(credentialNumber,13,2)+"&liveCity1=11&liveCity=160&mobilePhoneCache=&mobilePhone_ajax_res=0&mobilePhone=&needphone=0"这是POST的数据,其中xm这个是中文的。乱码也是这个。
解决方案
解决方案二:
你这string让我看的眼花,,可以使用string.format或者stringbuilder.AppendFormat....你用默认编码试试,还有,你这个是不是URL,URL可以用UrlEncode()
解决方案三:
POST中文要加码解码的Server.UrlEncode()Server.UrlDecode()方法二:(仅适用于后台传递)设置web.config文件<system.web>......<globalizationrequestEncoding="gb2312"responseEncoding="gb2312"culture="zh-CN"fileEncoding="gb2312"/>......</system.web>
解决方案四:
不是楼上的大哥们,上面这串是POST数据,面数据有使用UrlEncode,只是中文不管用什么来编码,对方收到的都是乱码,只是乱得不一样。GB2312,UTF8,都试过了,而且确认我POSt的数据和通过网页上提交表单所POST的数据是完全一样的。包括编码后都是一样的。怪就怪在这里。
解决方案五:
那你怎么往HttpWebRequest.GetRequestStream()里写的呢?话说,有了WebClient.UploadValues大家还是喜欢用原始的HttpWebRequest哇
解决方案六:
WebClient提供的各种方法都很不错,代码量也少
解决方案七:
使用GBK编码就OK了,我是用了GBK编码解决的
解决方案八:
用web.config就可解决!