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も試しました)が、ページが2つの異なるエンコーディングを使用しているようです。

つまり、「LeLièvre」を検索して生成されたクエリを出力すると、「è」が見つからず、「[eéèêëEÉÈÊË]」に置き換えられません。また、クエリをページに出力すると、見つからず置き換えられなかった「è」を除いて、すべてが混乱し、間違ったエンコーディングになります。クエリの一部を次に示します。
AND LastName LIKE '%L[eéèêëEÉÈÊË]L[iïîìIÃÃŽÃŒ]èvr[eéèêëEÉÈÊË]%'

この誤ってエンコードされたクエリが生成されると、データベースに何も見つからなくなります。

残念ながら、私はエンコーディングを扱った経験があまりなく、しばらくこれをいじって完全に困惑した後、助けを求めてここに来なければなりませんでした。

アドバイスをいただければ幸いです。

4

1 に答える 1

2

従来のaspをUTF-8エンコーディングで保存してみてください。

使用しているエディターはわかりませんが、ほとんどのエディター(Notepad ++、Textpad、...)は、自分自身のaspページをどのエンコードで保存するかを追加で指定できます。

于 2012-09-26T07:57:33.977 に答える