这几天做一个html向动态页面传参数,再用动态页面传参数返回html页面,其中使用JAVASCRIPT来作为中间传递。
这里给天几天工作伤心的经验:
首先是编码问题:C#中默认的格式为utf-8编码,文件的存储也是utf-8编码,然后我们一个同事把他做完的html页面传过来的时候,把编码给弄错了,每次一编译就是乱码,上网找了半天,解决了乱码的问题。用工作把所有的文件格式都换成utf-8的编码格式保存就OK。特别是JS也一定要这样。
其次,问题又出现了,在传参的时候,传偶数个汉字没有问题,但是奇数个汉字就会出现不能解的乱码:代码如下:
JS方使用下面的解码方式:decodeURI(im);
C#.NET方使用编码方式 : Response.Charset = "UTF-8";(很重要,因为我试过多次,如果在本地调试的时候,Response不会有问题。但一旦传到虚拟空间Response会把带有中文的编码方式直接转成GB2312的编码。) Response.Write ("<script>window.location.href='1/?im="+Server.HtmlEncode(str)+"';</script>");
但这样还是没有能解决问题,我就要网络上继续找:找到一个帖子:http://topic.csdn.net/t/20050620/10/4093405.html
原来是虚拟主机的问题。哎,我郁闷啊: IIS5不支持中文文件名的解决办法
修改服务器注册表
[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/InetInfo/Parameters]
"FavorDBCS"=dword:00000001
将“FavorDBCS”的值改为“0”
不知道有没有哪位有更好的解决办法?