0

コンテキスト情報

私はVBScriptで構築された古典的なASPサイトを実行しています

テキストフィールドに文字列を入力すると、クライアントはこの文字列を VB6-DLL に送信します。

dll は、文字列がデータベース テーブルに既に存在するかどうかを確認します。

ASP コードは次のようになります。

<%if dll.Checkstring(sString) = false then %>
    '-- Code when it fails.
<% else %>
    '-- Code when successful.
<% end if %>

そしてdll.checkstringで:

Function checkString(ByVal sString As String) As Boolean

    if existsInFooTable(sString) then
       checkString = true
    else
       checkString = false
    end if 

end function

問題

IE8 での文字列入力:"ÄÖÄWFÖWÖLFÖF"

検証用の VB-DLL での文字列入力: "ÄÖÄWFÖWÖLFÖF"IE8 からの実際の入力と一致します。

IE10 での文字列入力:"ÄÖÄWFÖWÖLFÖF"

検証用の VB-DLL での文字列入力:"ÄÖÄWFÖWÖLFÖF"ブラウザでの入力と一致しません。

で、何とかIE10ÄÖÄWFÖWÖLFÖFにコンバート中ÄÖÄWFÖWÖLFÖF

考え

ここで空白を空中に発射しているだけですが、これはデコード/エンコードの問題である可能性がありますか?

4

1 に答える 1

0

すべてのソフトウェア開発者が絶対に、積極的に Unicode と文字セットについて知っておく必要がある絶対最小値 (言い訳はありません!) .

データベースの文字セット、Web ページ (<meta> タグまたは http-header 内)、.asp ページ/vbscripts の文字セット、VB6 コンポーネントなどを確認する必要があります。パイプライン全体、 front-to-backが必要です使用されるエンコーディングに「同意する」(または、明示的な「変換」を提供する)。

UTF-8 を使用する場合:

メタタグの場合:

<!-- HTML5 -->
<meta charset="UTF-8">

<!-- HTML4 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

VB スクリプト:

Response.CodePage = 65001
Response.CharSet = "UTF-8"
Response.ContentType = "text/html"

データベースの文字セットが UTF-8 であることを確認し、VB6 コンポーネントが UTF-8 を正しく処理することも確認してください。

于 2013-11-08T12:39:49.423 に答える