鉴于大家对ASP.net十分关注,我们编辑小组在此为大家搜集整理了“WebService Behavior的一个中文Bug”一文,供大家参考学习
开心记得上次我做试验的时候,好象中文传输是有一些问题。<br>
我忘了是在哪一个阶段用的了,反正在使用某个方法的时候是出了问题。<br>
对了,想起来了。<br>
如下有一个Web Method<br>
[Web Method]<br>
public string test(string x)<br>
{<br>
//此处代码省略,将X值记录到服务器端的一个文件中<br>
...<br>
return x;<br>
}<br>
然后在客户端调用,并且传递一个中文字符或者其它特殊字符,如"\\"等给它,在返回到客户端可以看到其是正确的,但是,你如果打开它存在服务器端的那个文件,就会发现里面存的是一个乱码。<br>
开心想了半天,后来找到一个解决方案,对X进行UrlDecode就可以了。<br>
然后再在服务器端对其进行判断。<br>
比如,开心做聊天室,想判断其发言是否含有“靠”,“我 靠”这样的不雅字眼,<br>
[WebMethod]<br>
public string inputWhatYouSay(string ISay)<br>
{<br>
//label<br>
if(ISay.indexOf("靠")!=0)<br>
{<br>
return "该发言中有不当言语";<br>
}<br>
else<br>
{ <br>
return ISay;<br>
}<br>
}<br>
这样的话你可以试一下,无论你在客户端输入多少个“靠”,根本不管用,人家不理你,还是原样返回到客户端,但是,如果你在我程序中的“//label"处增加一行代码<br>
ISay=Server.UrlDecode(ISay);<br>
则一切正常了:)<br>
<br>
这只是一个临时的解决办法,估计这也是微软的一个Bug。等他们下一版本中改正吧。