经典ASP和Access之间的编码不正确

时间:2012-09-25 04:02:31

标签: encoding asp-classic

我有一个用classic-asp编写的用户搜索并挂钩到Access数据库。客户希望它对重音不敏感,所以搜索LeLievre这样的名字会返回LeLièvre。

由于在访问中无法做到这一点,我编写了一个快速函数,修改搜索查询以包含重音的所有选项,如下所示:

    strOutput = ""
    For i = 1 to Len(input)
        curLetter = Mid(input, i, 1)
        Select Case curLetter
            case "e", "é", "è", "ê", "ë", "E", "É", "È", "Ê", "Ë"
                strOutput = strOutput & "[eéèêëEÉÈÊË]"
            case "a", "à", "â", "ä", "A", "À", "Â", "Ä"
                strOutput = strOutput & "[aàâäAÀÂÄ]"
            Case "i", "ì", "ï", "î", "I", "Ì", "Ï", "Î"
                strOutput = strOutput & "[iïîìIÏÎÌ]"
            Case "o", "ô", "ö", "ò", "O", "Ô", "Ö", "Ò"
                strOutput = strOutput & "[oôöòOÔÖÒ]"
            Case "u", "ù", "û", "ü", "U", "Ù", "Û", "Ü"
                strOutput = strOutput & "[uûüùUÛÜÙ]"
            Case "c", "ç", "C", "Ç"
                strOutput = strOutput & "[cçCÇ]"
            Case Else           
                strOutput = strOutput & curLetter
        End Select
    Next

现在,我的问题。我将页面设置为使用“ISO-8859-1”以及asp CodePage / CharSet集(我也尝试过UTF-8),但看起来我的页面使用了两种不同的编码。

我的意思是,如果我搜索“LeLièvre”然后打印出生成的查询,则不会找到“è”并将其替换为“[eéèêëEÉÈÊË]”。此外,如果我将查询打印到页面,除了未找到和替换的“è”之外,所有内容都是乱七八糟的错误编码。以下是查询的一部分,
AND LastName LIKE '%L[eéèêëEÉÈÊË]L[iïîìIÃÃŽÃŒ]èvr[eéèêëEÉÈÊË]%'

生成的这个编码不正确的查询会导致数据库中找不到任何内容。

不幸的是,我没有太多处理编码的经验,并且在最后一次摆弄这个并完全被难倒之后我不得不来这里寻求帮助。

非常感谢任何建议。

1 个答案:

答案 0 :(得分:2)

尝试使用UTF-8编码保存您的经典asp。

我不知道您使用哪种编辑器,但大多数编辑器(Notepad ++,Textpad,...)可以另外指定应该保存它自己的asp页面的编码。