我有一个用 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ÉÈÊË]%'
然后,生成的这个错误编码的查询会导致在数据库中找不到任何东西。
不幸的是,我在处理编码方面没有太多经验,在最后一次摆弄这个之后,我完全被难住了,我不得不来这里寻求帮助。
任何建议将不胜感激。