2015-07-20 175 views
5

我正在更改我的應用程序以使用utf-8頁面。 所以每個ASP頁有這樣的代碼經典ASP和UTF-8

Response.CodePage = 65001 
Response.CharSet = "utf-8" 

和HTML

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

我編碼UTF-8保存的所有文件在Visual Studio 2013(簽名)65001

這工作正常,當我寫這樣的HTML特殊字符:

<p>Atenção</p> 

但是,當我在VBScript(經典ASP)中編寫它不工作,特殊字符很混亂。我可以通過編碼保存文件(.asp的)解決這些問題UTF-8(簽名)65001

所以,我的問題是:

  • 我必須用這個編碼(帶簽名)在每一頁上?
  • 我可以用它做什麼樣的問題?
+0

我推薦閱讀本文 - http://www.hanselman.com/blog/InternationalizationAndClassicASP.aspx VS似乎調用字節順序標記簽名。 – John

+0

所以,我的ASP頁面必須有BOM。 – Onaiggac

+1

它不應該包含BOM。也就是說,我經常將頁面保存爲不含BOM的UTF8,而且我沒有任何困難。 (雖然我傾向於不使用VS作爲Classic ASP,但我使用了一個名爲EditPlus的編輯器,它與Hanselman提到的Notepad2類似) – John

回答

3

您需要爲每個.asp文件設置@Codepage指令。我們使用的是第一個在每一頁上,幷包含有以下行前面的通用#include文件:

<%@Codepage = 65001 %> 
<% Option explicit %> 
<% Response.Codepage = 65001 %> 

請參閱有關代碼頁指令here(備註部分)的詳細信息。鏈接的頁面大約是Session.Codepage,如果你想使用內置的Session,它也可能對你很有意思。

保存所有帶有BOM的文件並不是IIS的必需條件,我們保存了沒有BOM的所有文件都可以正常工作。

從我的經驗來看,使用ASP多年後:我們有時會遇到源文件材料清單潛入生成輸出的問題,這會導致AJAX/JSON響應出現問題。補救措施是在輸出之前使用Response.Clear

0

我有奇怪的字符問題,嘗試了所有建議的編碼設置建議,沒有任何工作,雖然上面確實得到了數據到sql數據庫,它不會正確顯示(仍然是編碼/解碼問題) 。

我的決議是從數據庫連接字符串中刪除「CharSet=utf8;」。

所以不是我的連接字符串:

sConnection = "DRIVER={MySQL ODBC 5.1 Driver};SERVER=localhost;CharSet=utf8;Port:3306;DATABASE=dbname;UID=uid;PASSWORD=*****;OPTION=3" 

我用:

sConnection = "DRIVER={MySQL ODBC 5.1 Driver};SERVER=localhost;Port:3306;DATABASE=dbname;UID=uid;PASSWORD=*****;OPTION=3" 

事情現在顯示正確!