摘要:讀者阿木詢問使用 ASP.NET AJAX Control Toolkit 的網頁是否一定要使用 UTF-8 編碼
問題:
請問老師
使用ASP.NET.AJAX.Control.ToolKit技術
網頁編碼是不是一定要是utf-8
解答:
當您在 ASP.NET 網頁中使用 AJAX Control Toolkit (於撰寫此文時,最新版本為 2007 年 11 月 19 日所發行的 Version 1.0.11119.0)內建的 ToolkitScriptManager 控制項來取代 AJAX Extensions 的 ScriptManager 控制項時,再加上網頁編碼不是採用預設的 UTF-8,那麼於 IE 瀏覽器檢視該網頁時,便會出現如圖表 1 與圖表 2 所示的錯誤訊息。奇怪的是,在 FireFox、Opera 等瀏覽器卻不會發生這個錯誤訊息。
圖表 1
圖表 2
欲解決這個問題,請採用下列幾種方式:
1. | 不使用 ToolkitScriptManager 控制項,改用 ScriptManager 控制項。但是這就失去使用 ToolkitScriptManager 控制項的優勢,原因請參考:http://blog.xuite.net/alwaysfuturevision/liminzhang/12252163。 |
2. | 依舊使用 ToolkitScriptManager 控制項,但要修改 web.config 裡關於全球化區塊的設定,將處理地區設定相關資源搜尋的預設文化特性之屬性 uiCulture,設定為 en,如下所示即是一例: <configuration> <system.web> <globalization fileEncoding="big5" requestEncoding="big5" responseEncoding="big5" culture="zh-TW" uiCulture="en" /> </system.web> </configuration> |
3. | 修改 AJAX Control Toolkit 的原始碼,開啟方案檔 AjaxControlToolkit.sln,然後開啟 ToolkitScriptManager.cs (位於 AjaxControlToolkit 專案下的 ToolkitScriptManager 目錄中),移至第 260 行程式碼,將原本的程式碼: using (StreamWriter outputWriter = new StreamWriter(outputStream)) 改寫成: using (StreamWriter outputWriter = new StreamWriter(outputStream, context.Response.ContentEncoding)) 接著按下「建置」功能表中的「建置 AjaxControlToolkit」指令,於建置完畢之後,將重新編譯過的 AjaxControlToolkit.dll 與所需的各語言之 AjaxControlToolkit.resources.dll 複製到您的專案或網站中。 |
附註:
您必須下載內含程式碼的 AjaxControlToolkit.zip,才能使用方法 3。
章立民研究室 2008/1/20