• globalization与全球化


    本配置节是关于配置应用程序的全球化设置。

       

    <globalization
    
    <!--以下两个特性默认编码为 UTF-8,该编码在 Machine.config 文件(在安装 .NET Framework 时创建)的 globalization 节中指定。 如果在 Machine.config 或 Web.config 文件中未指定响应编码,则编码默认为计算机的"区域选项"区域设置。
    
    在单服务器应用程序中,此特性和responseEncoding 特性应该相同。 对于不常见的情况(默认服务器编码不同的多服务器应用程序),可以使用本地 Web.config 文件改变请求和响应编码。
    
    -->
    
    <!--指定每一传入请求的假定的编码,包括已传递的数据和查询字符串。如果请求附带包含一个 Accept-Charset 特性的请求标头,它将重写配置中的该特性。-->
    
    requestEncoding="any valid encoding string"
    
    <!--指定响应的内容编码。-->
    
    responseEncoding="any valid encoding string" 
    
    fileEncoding="any valid encoding string"
    
    responseHeaderEncoding = "any valid encoding string"  
    
    resourceProviderFactoryType = string   
    
    <!--目前不使用此特性-->
    
    enableClientBasedCulture="true|false"
    enableBestFitResponseEncoding = "true|false"   
    
    <!--以下两个特性的内容可参见System.Globalization.CultureInfo,通常情况下中国简体是"zh-ch", JA-JP EN-US 日语和英语 (美国)-->
    
    <!--为处理传入的 Web 请求指定默认的区域性。此特性还可以设置为 auto。-->
    
    culture="any valid culture string"
    
    <!--为处理依赖于区域设置的资源搜索指定默认的区域性。此特性还可以设置为 auto。-->
    
    uiCulture="any valid culture string"/>

    例如如下设置

    <globalization 
    requestEncoding="iso-8859-1"
    responseEncoding="iso-8859-1"/>

    请求时出现中文(字符编码不对),则会出现乱码,同样响应的页面中的中文也会出现乱码,正常配置时如下图所示

    设置了响应编码为iso-8859-1或其他诸如此类ASCII让中文显示乱码的编码,则会出现

    其响应的内容均使用了iso-8859-1而使得中文不能正常显示。

    假若使用了UNICODE作为响应编码,中文能正常显示,但是js有报错,jquery的脚本出现乱码。

       

       

    另外在特性中有两个特性——uiCulture和resourceProviderFactoryType 是和资源相关的,即*.resx这部分的内容,实际上资源并不局限于*.resx,这个可以参考蒋金楠老师的博文。uiCulture是指定ui界面的区域语言。resourceProviderFactoryType则是指定自定义的资源提供者工厂类的完全限定名。例如

    <globalization uiCulture="zh-CN" resourceProviderFactoryType="FastDoge.Bussiness.MyResourceProviderFactory, FastDoge.Bussiness"/>

    这个类FastDoge.Bussiness.MyResourceProviderFactory继承抽象类ResourceProviderFactory。重写两个方法

    public override IResourceProvider CreateGlobalResourceProvider(string classKey);
    
    public override IResourceProvider CreateLocalResourceProvider(string virtualPath);

    两个方法区别在于前者是用的是全局资源的ResourceProvider,而后者是对于每个页面自带的资源的ResourceProvider

    构造的ResourceProvider实现IResourceProvider接口。实现方法

    public object GetObject(string resourceKey, System.Globalization.CultureInfo culture)

    和getter属性

    public System.Resources.IResourceReader ResourceReader

       

    GetObject方法是获取某个资源名的资源值;ResourceReader属性获取的IResourceReader获取整套资源集合的读取器。ResourceProvider的大致作用则是如此。

    在代码中获取资源值时调用System.Web.HttpContext的静态方法GetGlobalResourceObject方法和GetLocalResourceObject

       

    参考文章

    .NET的资源并不限于.resx文件,你可以采用任意存储形式[上篇]

    http://www.cnblogs.com/artech/archive/2010/12/16/Reource_framewok_01.html

    .NET的资源并不限于.resx文件,你可以采用任意存储形式[下篇]

    http://www.cnblogs.com/artech/archive/2010/12/17/Reource_framewok_02.html

    如何让ASP.NET默认的资源编程方式支持非.ResX资源存储

    http://www.cnblogs.com/artech/archive/2010/12/30/ResourceProvider.html

       

  • 相关阅读:
    ☀【布局】
    _#【CSS3】
    _#minheight
    【其它】引入css
    【css3】url
    鼠标闲置一段时间后自动隐藏
    图解SQLServer2005获取WebService数据
    Oracle字符串字段内的字符排序
    一个c#读取扫雷内存的demo
    sqlserver使用bcp分解字符串
  • 原文地址:https://www.cnblogs.com/HopeGi/p/5883865.html
Copyright © 2020-2023  润新知