2012-03-15 70 views
1

我在ASP經典頁面上動態加載部分內容的問題。我使用AJAX動態加載頁面,具體取決於下拉選擇選項。生成包含一些標籤,用於在下拉菜單中包含下拉菜單和選項文本。標籤是以UTF-8編碼的常量,包含一些西歐重音字符,選項文本從數據庫加載,也包含帶重音符號的字符,但用ANSI編碼。標籤被設置爲utf-8,但它僅影響頁面的第一次加載,因爲它們全部放在頁面上。選擇其他選項後,AJAX會填充元素,並且它會加載標籤,但選項文本會混亂,所以我猜AJAX沒有加載第二次等文本編碼。解決方法是更改​​常量中的標籤文本,並在第一次加載的頁面上設置 <%Response.Charset =「windows-1252」%>。 現在,我想找到更好的方法,在AJAX響應中將其全部設置爲UTF-8或windows-1225,或者將頁面上的每個元素設置爲與ajax具有不同的編碼。我甚至試過從ASP經典的替換功能,它的工作原理,但它又需要每個新的重音字母替換。任何幫助感謝! :)通過AJAX加載的ASP經典錯誤字符集

回答

3

我認爲解決編碼問題的最佳方法是切換到utf-8。它不僅消除了使用你自己的語言處理特殊字符的麻煩,而且還消除了所有語言(正如我所瞭解的utf-8)。

首先,在HTML頭中包含以下元標記。

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

您還需要在所涉及的所有ASP-文件的頂部設置UTF-8。

response.codepage = 65001 
response.charset = "utf-8" 

請注意儘管這帳和從你的ASP的頁面(例如經由一種形式)的字符將被解釋爲UTF-8。在腳本的內部,字符串以unicode存儲。 確保始終將數據保存爲數據庫中的unicode。

閱讀這個問題的答案question進行更深入的信息

+0

我知道。每個頁面都包含,但是當我從數據庫加載數據時,它會變爲utf-8 automaticaly並在頁面上該數據已損壞。 DB數據類型的變化不是一個選項,因爲我們的數據庫太大,並且被廣泛使用。這是兩個不同數據源(.asp LIB和DB)的獨特問題。我想從ajax獲得響應,然後過濾它(.filter())並添加charset = utf-8到下拉標籤,並在下拉選項數據上添加charset = windows-1252。不能找到如何在同一時間過濾兩件事cos 1部分被刪除 – user1271080 2012-03-15 12:16:01

+0

將utf-8存儲在數據庫中是一個可怕的想法。對這些數據的任何操作讓我們假設SQL必須知道它是utf-8。對於像測量一個字符串長度這樣的簡單操作,你會變成大麻煩。在數據庫中存儲unicode。 – Paul 2012-12-21 13:16:20

+0

@保羅我根據你的評論改變了我的答案。請確認我說得對。如果正確的話,如果您刪除了否定的投票,那將會很好。祝你有個愉快的星期五! :) – David 2013-01-11 13:51:09