2013-01-19 231 views
1

我是新來的字符集和編碼。我不知道我在做什麼錯,但是當我想輸出你的時候,頁面只是吐出奇怪的代碼。這是我的代碼:經典ASP response.write UTF-8中文字符

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<%Response.ContentType = "text/html" 
Response.AddHeader "Content-Type", "text/html;charset=UTF-8" 
Response.CodePage = 65001 
Response.CharSet = "UTF-8"%> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> 
</head> 
<body> 
<%response.write ("你好")%> 
</body> 
</html> 

我只能在屏幕上看到的是:ä½A¥½ 的文件保存在UTF-8編碼爲好。

在此先感謝!

回答

1

移動您的DOCTYPE聲明設置代碼頁的代碼塊。代碼頁設置需要在任何輸出之前發生。

0

您不必在服務器端將.asp保存爲UTF-8!通常保存(UCS-2)。

1

很可能你的asp文件只是UTF-8編碼(沒有bom)。
如果是,需要用BOM保存文件。
在記事本++中,Encoding > Convert to UTF-8
在記事本中,在保存對話框中指定編碼爲UTF-8。

其實BOM for UTF-8 files is not recommended
重點是在ASP中,響應流需要隱含BOM。
作爲一個實驗,嘗試運行下面的頁面(編碼爲utf-8,沒有bom),你會看到Response對象刷新奇怪的字符而不是字母。但是直接輸入應該是平滑的。

<% 
Response.Codepage = 65001 
Response.Charset = "utf-8" 
Response.Write "I'm weird: 好" 
%><br />I'm not weird: 好 
2

如果它有助於某人。 ASP聲明總是在任何HTML之前。 Incudes define session,那種方式永遠不會編碼utf-8

<%@CodePage = 65001%> 
<% 
Session.CodePage = 65001 
Response.charset ="utf-8" 
Session.LCID  = 1033 'en-US 
%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> 
</head> 
<body> 
<%response.write ("你好")%> 
</body> 
</html>