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も試しました)が、ページが2つの異なるエンコーディングを使用しているようです。
つまり、「LeLièvre」を検索して生成されたクエリを出力すると、「è」が見つからず、「[eéèêëEÉÈÊË]」に置き換えられません。また、クエリをページに出力すると、見つからず置き換えられなかった「è」を除いて、すべてが混乱し、間違ったエンコーディングになります。クエリの一部を次に示します。
AND LastName LIKE '%L[eéèêëEÉÈÊË]L[iïîìIÃÃŽÃŒ]èvr[eéèêëEÉÈÊË]%'
この誤ってエンコードされたクエリが生成されると、データベースに何も見つからなくなります。
残念ながら、私はエンコーディングを扱った経験があまりなく、しばらくこれをいじって完全に困惑した後、助けを求めてここに来なければなりませんでした。
アドバイスをいただければ幸いです。