文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>使用.NET获取客户端默认语言的几种方法对比

使用.NET获取客户端默认语言的几种方法对比

时间:2010-10-12  来源:花和尚

最近在做一个涉及多语言的网站,在IE下通过Request.ServerVariables["HTTP_ACCEPT_LANGUAGE"]获取到相应的值后存入Cookies.然后调用与cookies值相同名称的语言包,如zh-CN;

大致代码如下

System.Web.HttpCookie lang= System.Web.HttpContext.Current.Request.Cookies["lang"];
lang= new System.Web.HttpCookie("lang");
lang.Value = Request.ServerVariables["HTTP_ACCEPT_LANGUAGE"];
lang.Expires = System.DateTime.Now.AddYears(1);
System.Web.HttpContext.Current.Response.Cookies.Add(lang);
此段代码在IE浏览器下运行正常,能正常识别到语言及调用相应的语言包,但当通过Firefox测试时发生错误,后使用Opera再测试,同样发生错误,跟踪调试结果看到

Request.ServerVariables["HTTP_ACCEPT_LANGUAGE"];的输出结果在IE、Firefox、Opera均不一样,然后使用其他几种方式调试获取。

 

方法一

Response.Write(Request.ServerVariables["HTTP_ACCEPT_LANGUAGE"]);

浏览器 返回内容  
IE系列 zh-CN  
Firefox zh-cn,zh;q=0.5  
Opera zh-CN,zh;q=0.9,en;q=0.8  

 

方法二

方式是从获取客户端语言首选项的排序字符串数组,代码如下:

Response.Write(Request.UserLanguages[0].ToString());

浏览器 返回内容  
IE zh-CN  
Firefox zh-cn  
Opera zh-CN  

 

方法三

代码如下

Response.Write(Request.Headers["Accept-Language"].ToString());

IE zh-CN  
Firefox zh-cn,zh;q=0.5  
Opera zh-CN,zh;q=0.9,en;q=0.8  

 

对比可见方法一与方法三得到结果相同,均为多个参数,在非IE浏览器下需要再次分解一下得到最终的值,方法二输出结果可以直接赋值,不需要再次处理。最后使用如下代码在3个浏览器下均调试通过。

System.Web.HttpCookie lang= System.Web.HttpContext.Current.Request.Cookies["lang"];
lang= new System.Web.HttpCookie("lang");
lang.Value = Request.UserLanguages[0].ToString();

lang.Expires = System.DateTime.Now.AddYears(1);
System.Web.HttpContext.Current.Response.Cookies.Add(lang);

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载