如果ASP页面上有任何输入或输出this sort of thing就像魅力一样:
<%@ LANGUAGE="VBScript" CodePage = 65001 %>
<%
Response.CharSet = "UTF-8"
Response.CodePage = 65001
%>
但是如果它是一个执行纯VBS的ASP页面,我通过Server.CreateObject("ADODB.Command")
将一个非拉丁字符串作为参数传递给MS SQL sproc,那么它就变成了一系列?
个字符。当命令执行时,MS SQL将其放入varchar列。
但是,我确实有一个IIS实例,其中相同的ASP页面将使用UTF-8编码将这些字符串插入数据库。由于我找不到允许它工作的IIS设置,如何强制将ADODB.Command参数值转换为UTF-8?
答案 0 :(得分:1)
ASP字符编码可能是一件善变的事情。在169个ASP文件的代码库中,一个已使用UTF-8-BOM编码保存。它被部署到一台机器而不是另一台机器。它包含的只是一些VBS FUNCTION
定义。但是任何包含BOM编码文件的ASP都会立即无法在UTF-8中附加ADODB.Command参数。相反,它显然决定 - 但仅限于ADODB.Command目的,而不是针对MSXML2.ServerXMLHTTP对象的JSON PUT - 非ASCII的所有内容都是?
。
就是这样:将代码文件保存为UTF-8-BOM和ASP中断。将它保存为UTF-8再次有效。
如何发现使用“错误”编码保存分布在几十个目录中的169个ASP文件中的一个?我不知道。我很幸运,碰巧知道最近的工作在哪里,并碰巧在Notepad ++中检查文件的编码。
它只是有两种不同的编码混淆了经典的ASP吗?我不知道,但是here's at least one other answer that suggests that BOM encoding causes problems。