2012-05-13 36 views
5

試圖製作我的第一個ASP.NET頁面。在XP上獲得IIS 5.1,配置爲運行.NET 4.創建一個新的虛擬目錄並添加一個.aspx文件。當我瀏覽文件時,非ASCII字符已損壞。例如,一個ü(U + 00FC)被轉換爲ü(U + 00C3 U + 00BC),這是我不能得到這個是UTF-8的等價物。我需要web.config用於非ASCII字符嗎?

我試圖利用這一的各種方式:

  1. 我確信.aspx文件確實是編碼爲UTF-8。
  2. 我設置meta標籤:

    <meta charset="UTF-8">

  3. 我設置虛擬目錄來處理的.aspx爲text/html;charset=utf-8下IIS HTTP頭>文件類型。

  4. 我加了ResponseEncoding="utf-8"<%@ Page ... %>
  5. 我在HttpUtility.HtmlEncoded()中插入了字符串。現在將其轉換爲Ã ¼(U + 00C3U + 00BC)。

最後,我發現2種方法奏效:

  1. 爲字符引用更換非ASCII字符,如&#252;這在上世紀90年代,就沒有今天還行。
  2. 添加web.config文件的虛擬目錄,與此內容:

    <?xml version="1.0" encoding="utf-8"?> 
    <configuration> 
        <system.web> 
        <globalization fileEncoding="utf-8"/> 
        </system.web> 
    </configuration> 
    

沒有fileEncoding設定,ASP.NET分析器將讀取的.aspx和腐敗的每一個非ASCII字符而不嘗試推斷文件編碼。這只是你專業人員學會與之共處的東西,還是我錯過了一些東西?是一個web.config文件,其中包含全球化設置方式來處理.aspx頁面上的「國際」字符?我不記得有與PHP類似的問題,所以我很困惑爲什麼這與ASP.NET有關。

+0

我發現使它沒有web.config文件工作的另一種方式:保存.aspx頁,帶字節順序標記(BOM)的UTF-8。一般來說,UTF-8不應該需要BOM,因爲字節順序在編碼中是隱含的,但是微軟有傳統要求它,這可能是正確的做法,因爲它推斷更多的文件編碼強大的。我想這是我正在尋找的解決方案,但仍然歡迎評論。 –

+0

你應該考慮安裝微軟Web平臺安裝程序,並使用IIS Express 7.5和Web矩陣或VS 2010的快遞 – Aviatrix

回答

3

要使用非ASCII字符,您需要有兩件事。使用UTF-8保存文件,通過選擇該編碼的文件,並確保你有你的的web.config

<globalization requestEncoding="utf-8" responseEncoding="utf-8" fileEncoding="utf-8" /> 

注意這些設置始終存在於ASP.NET一個web.config 。有一個全球性的,也有這些設置,並住在asp.net目錄{drive:}\WINDOWS\Microsoft.NET\Framework\{version}\CONFIG\,然後在你的項目上的web.config。有時候全球的人會設置當前國家的編碼。在這種情況下,您需要在項目中將其設置回UTF-8。

你已找到了所有已經,我只是點出了3個設置:

  1. 保存文件使用Unicode。
  2. 將requestEncoding = 「utf-8」
  3. 設置的ResponseEncoding = 「UTF-8」
+0

這沒有奏效。之後我加入fileEncoding它工作。 <全球化requestEncoding =「utf-8」responseEncoding =「utf-8」fileEncoding =「utf-8」/> –

+0

@ blackholeearth0_gmail好吧,我會更新我的答案 – Aristos