0

上下文信息

我有一个经典的 asp 站点正在运行,用 VBScript 构建

当我在文本字段中输入字符串时,客户端将此字符串发送到 VB6-DLL。

dll 负责查明该字符串是否已存在于数据库表中。

ASP 代码如下所示:

<%if dll.Checkstring(sString) = false then %>
    '-- Code when it fails.
<% else %>
    '-- Code when successful.
<% end if %>

在 dll.checkstring 中:

Function checkString(ByVal sString As String) As Boolean

    if existsInFooTable(sString) then
       checkString = true
    else
       checkString = false
    end if 

end function

问题

IE8中的字符串输入:"ÄÖÄWFÖWÖLFÖF"

用于验证的 VB-DLL 中的字符串输入:"ÄÖÄWFÖWÖLFÖF"匹配来自 IE8 的实际输入。

IE10中的字符串输入:"ÄÖÄWFÖWÖLFÖF"

用于验证的 VB-DLL 中的字符串输入:"ÄÖÄWFÖWÖLFÖF"与浏览器中的输入不匹配。

所以,不知何故ÄÖÄWFÖWÖLFÖF被转换成ÄÖÄWFÖWÖLFÖFIE10。

想法

我只是在这里向空中射击,但是,这可能是解码/编码问题吗?

4

1 回答 1

0

每个软件开发人员绝对、肯定必须了解 Unicode 和字符集的绝对最低要求(没有借口!)

您需要检查数据库、网页(在 <meta>-tag 或 http-header 中)的字符集、.asp 页面/vbscripts、VB6 组件等的字符集。整个管道,从前到后,需要“同意”(或者,提供明确的“转换”)所使用的编码。

假设您要使用 UTF-8:

对于元标签:

<!-- HTML5 -->
<meta charset="UTF-8">

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

VB脚本:

Response.CodePage = 65001
Response.CharSet = "UTF-8"
Response.ContentType = "text/html"

确保您的数据库的字符集是 UTF-8,并确保您的 VB6 组件也能正确处理 UTF-8。

于 2013-11-08T12:39:49.423 回答