ASP 经典:ADODB 的字符编码由什么决定?
ASP classic: What determines character encoding for ADODB?
如果 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?
ASP 字符编码是一件变化无常的事情。在 169 ASP 个文件的代码库中,一个 已使用 UTF-8-BOM 编码保存。它被部署到一台机器上,但没有部署到另一台机器上。它只包含一些 VBS FUNCTION
定义。但是任何包含该文件的 BOM 编码的 ASP 都立即无法在 UTF-8 中附加 ADODB.Command 参数。相反,它显然决定——但只是为了 ADODB.Command 目的,而不是为了 JSON PUT over MSXML2.ServerXMLHTTP 对象——所有不是 ASCII 的东西都是 ?
.
就是这样:将代码文件保存为 UTF-8-BOM 和 ASP 中断。将其另存为 UTF-8 再次运行。
您如何发现分布在几十个目录中的 169 个 ASP 文件中的一个是使用 "wrong" 编码保存的?我不知道。运气好,刚好知道最近的工作在哪里做的,刚好在Notepad++中查看了文件的编码。
是否只是有两种不同的编码混淆了经典 ASP?我不知道,但是 here's at least one other answer that suggests that BOM encoding causes problems.
如果 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?
ASP 字符编码是一件变化无常的事情。在 169 ASP 个文件的代码库中,一个 已使用 UTF-8-BOM 编码保存。它被部署到一台机器上,但没有部署到另一台机器上。它只包含一些 VBS FUNCTION
定义。但是任何包含该文件的 BOM 编码的 ASP 都立即无法在 UTF-8 中附加 ADODB.Command 参数。相反,它显然决定——但只是为了 ADODB.Command 目的,而不是为了 JSON PUT over MSXML2.ServerXMLHTTP 对象——所有不是 ASCII 的东西都是 ?
.
就是这样:将代码文件保存为 UTF-8-BOM 和 ASP 中断。将其另存为 UTF-8 再次运行。
您如何发现分布在几十个目录中的 169 个 ASP 文件中的一个是使用 "wrong" 编码保存的?我不知道。运气好,刚好知道最近的工作在哪里做的,刚好在Notepad++中查看了文件的编码。
是否只是有两种不同的编码混淆了经典 ASP?我不知道,但是 here's at least one other answer that suggests that BOM encoding causes problems.