程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> globalization與全球化,globalization

globalization與全球化,globalization

編輯:關於.NET

globalization與全球化,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

   

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved