问题描述
在普通的 ASP Classic 文档中,我设置了 CodePage = 65001 和 Charset = UTF-8,但不知何故它没有返回正确的字符集(丹麦语) - 文档被保存为 UTF-8 编码 i Visual Studio Code
代码:
<%
Response.CodePage = 65001
Response.ContentType = "text/html"
response.addheader "Content-Type","text/html;charset=UTF-8"
Response.CharSet = "UTF-8"
Response.Write "The Session code page is " & Session.CodePage & "<BR>"
Response.Write "The Response code page is " & Response.CodePage & "<BR>"
Response.Write "The Response Charset is " & Response.CharSet & "<BR>"
Response.Write "<br>"
Response.Write "Page with æ ø å"
Response.End
%>
.. 它应该返回丹麦语 æ ø å,但返回以下内容:
The Session code page is 65001
The Response code page is 65001
The Response Charset is UTF-8
Page with æ ø å
有人知道这里发生了什么吗? .. 同一站点中的所有其他页面都可以正常工作,我也尝试将代码复制到另一个新文件,但这无济于事!
<%
Response.CodePage = 65001
Response.ContentType = "text/html"
response.addheader "Content-Type","text/html;charset=UTF-8"
Response.CharSet = "UTF-8"
Response.Write "The Session code page is " & Session.CodePage & "<BR>"
Response.Write "The Response code page is " & Response.CodePage & "<BR>"
Response.Write "The Response Charset is " & Response.CharSet & "<BR>"
Response.Write "<br>"
Response.Write "Page with æ ø å"
Response.End
Dim strUser,strPassword,domain,AuthenticateUser,InsertToEFPLogsql,InsertToEFPlogobj,InsertToEFPLog,strQuery,oConn,cmd
strUser = Request.Form("strUserName")
strPassword = Request.Form("strPassword")
Dim SettingsDeveloperConn
Set SettingsDeveloperConn = Server.CreateObject("ADODB.Connection")
SettingsDeveloperConn.ConnectionString="<CONNECTIONSTRING>"
SettingsDeveloperConn.Open
Dim SettingsDevelopersql,objSettingsDeveloper
SettingsDevelopersql = "SELECT DeveloperAdminemail,DeveloperAdminHash FROM EFP_Settings WHERE ID = 1;"
Set objSettingsDeveloper = SettingsDeveloperConn.Execute(SettingsDevelopersql)
IF strUser = objSettingsDeveloper("DeveloperAdminemail") THEN
IF strPassword = objSettingsDeveloper("DeveloperAdminHash") THEN
AuthenticateUser = true
Session("UserIsAuthenticated") = "true"
Session("ADUserEmail") = strUser
Session("DeveloperAdmin") = "true"
Set InsertToEFPLog = Server.CreateObject("ADODB.Connection")
InsertToEFPLog.ConnectionString="CONNECTIONSTRING"
InsertToEFPLog.Open
InsertToEFPLogsql = "INSERT INTO EFP_LOG (DataString,Operation,Area,ChangedBy,ContactID,ADdisplayName) VALUES ('" & strUser & " loggede på','Login','','Developer Admin','Developer Admin');"
response.Write InsertToEFPLogsql
Response.End
Set InsertToEFPlogobj = InsertToEFPLog.Execute(InsertToEFPLogsql)
InsertToEFPLog.Close
Set InsertToGEFPLog = nothing
Response.Redirect "index.asp"
ELSE
AuthenticateUser = false
Session("tmpstrUserName") = strUser
Response.Redirect "login.asp?AuthRejected=yes"
END IF
ELSE
'on error resume next
domain = "<DOMAIN CONTROLLER>"
' assume failure
AuthenticateUser = false
strQuery = "SELECT cn FROM 'LDAP://" & domain & "' WHERE objectClass='*' "
set oConn = server.CreateObject("ADODB.Connection")
oConn.Provider = "ADsDSOOBJECT"
oConn.Properties("User ID") = strUser
oConn.Properties("Password") = strPassword
oConn.Properties("Encrypt Password") = true
oConn.open "DS Query",strUser,strPassword
set cmd = server.CreateObject("ADODB.Command")
set cmd.ActiveConnection = oConn
cmd.CommandText = strQuery
on error resume next
set oRS = cmd.Execute
if oRS.bof or oRS.eof then
AuthenticateUser = false
Session("tmpstrUserName") = strUser
Response.Redirect "login.asp?AuthRejected=yes"
else
Session("ADUserEmail") = strUser
Dim arr
arr = Split(Session("ADUserEmail"),"@")
Session("ADUserName") = arr(0)
Dim GetPrivilegeLevelConn
Set GetPrivilegeLevelConn = Server.CreateObject("ADODB.Connection")
GetPrivilegeLevelConn.ConnectionString="CONNECTIONSTRING"
GetPrivilegeLevelConn.Open
Dim GetPrivilegeLevelsql,objGetPrivilegeLevel
GetPrivilegeLevelsql = "SELECT * FROM EFP_SITE_PRIVILEGE_MEMBERS WHERE PrivilegeUserID = '" & arr(0) & "';"
Set objGetPrivilegeLevel = GetPrivilegeLevelConn.Execute(GetPrivilegeLevelsql)
if objGetPrivilegeLevel.bof or objGetPrivilegeLevel.eof then
AuthenticateUser = false
EnrollRequestUser = true
Session("EnrollRequestUser") = "true"
Session("tmpstrUserName") = Session("ADUserName")
Response.Redirect "index.asp?EnrollRequestUser=yes"
else
Session("EFPPrivilegeLevel") = objGetPrivilegeLevel("PrivilegeLevelID")
Session("EFPPrivilegeName") = objGetPrivilegeLevel("PrivilegeLevelName")
AuthenticateUser = true
Session("UserIsAuthenticated") = "true"
Set InsertToEFPLog = Server.CreateObject("ADODB.Connection")
InsertToEFPLog.ConnectionString="CONNECTIONSTRING"
InsertToEFPLog.Open
InsertToEFPLogsql = "INSERT INTO EFP_LOG (DataString,ADdisplayName) VALUES ('" & Session("ADUserEmail") & " loggede på;','" & arr(0) & "','" & arr(0) & "');"
Set InsertToEFPlogobj = InsertToEFPLog.Execute(InsertToEFPLogsql)
InsertToEFPLog.Close
Set InsertToGEFPLog = nothing
response.Write InsertToEFPLogsql
Response.End
Response.Redirect "index.asp"
set objGetPrivilegeLevel = nothing
set GetPrivilegeLevelConn = nothing
end if
end if
set oRS = nothing
set oConn = nothing
END IF
%>
更新!!!
我尝试添加一个默认的 HTML 模板,并添加了 ASP 代码和一些普通文本.. 结果是 ASP 没有返回正确的编码,但 HTML 返回了..
新代码:
<%
Response.CodePage = 65001
Response.ContentType = "text/html"
response.addheader "Content-Type","text/html;charset=UTF-8"
Response.CharSet = "UTF-8"
%>
<!doctype html>
<html lang="en">
<head>
<Meta charset="utf-8">
<Meta name="viewport" content="width=device-width,initial-scale=1">
<title>Hello,world!</title>
</head>
<body>
<% Response.Write "The Session code page is " & Session.CodePage & "<BR>" %>
<% Response.Write "The Response code page is " & Response.CodePage & "<BR>" %>
<% Response.Write "The Response Charset is " & Response.CharSet & "<BR>" %>
<% Response.Write "<br>" %>
<% Response.Write "Page with æ ø å" %>
<br>
<br>Hej æ ø å
</body>
</html>
<% Response.End %>
返回:
The Session code page is 65001
The Response code page is 65001
The Response Charset is UTF-8
Page with æ ø å
Hej æ ø å
新更新
@user692942 实际上通过指向 this article 的链接将其钉在了上面。为我修复它的实际上是将所有字符集和代码页更改为:
<%@Language="VBScript" CodePage = 65001 %>
<%
Response.CharSet = "UTF-8"
谢谢@user692942! :-)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)