0

我有一个用 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ÉÈÊË]%'

然后,生成的这个错误编码的查询会导致在数据库中找不到任何东西。

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

任何建议将不胜感激。

4

1 回答 1

2

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

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

于 2012-09-26T07:57:33.977 回答