あなたにはいくつかの問題があると思います。
日本語と中国語のテキストを表す一般的な方法はいくつかあります。従来のエンコーディング (Shift_JIS、EUC-JP、および日本語の場合は JIS バリアント、中国語の場合はその他のいくつか) または Unicode (UTF-8 または UTF-16) を使用します。多言語アプリケーションの場合、ページ コンテンツを UTF-8 で送信することをお勧めします。Windows 自体は、コンテンツを UTF-16 で保存することを好みます (これは、MS SQL Server で NTEXT および NVARCHAR が使用するものです)。
日本語のコンテンツを正しく表示するには、データ パイプラインのすべての段階で適切な変換が行われていることを確認する必要があります。正気を保つために Unicode を使用すると仮定しましょう。ただし、Shift-JIS、big5、gb2312 などを意図的に使用することを選択した場合、答えは同様になり、さらに複雑になります。
データが主に Web フォームから取得されている場合は、コードページが 65001 に設定されていることを確認する必要があります。通常、各 ASP ファイルの先頭にある <%@codepage=65001%> ディレクティブを使用します。
さらに、UTF-8 を使用しているというヒントをユーザー エージェント (Web ブラウザー) に提供する必要があります。2 つの手法があり、1 つは HTTP ヘッダーを使用します。もう 1 つのオプションは、メタ タグを使用して HTTP ヘッダーを偽装することです。
メタ タグ ソリューション:
私のさびた ASP スキルを使用した HTTP ヘッダー ソリューション (javascript を想定していますが、おそらく vbscript を使用しているため、セミコロンを削除する必要があります) Response.ContentType="text/html"; Response.Charset="utf-8";
Web フォームではなくフィードで MSSQL にデータを取り込む場合は、データが適切に変換されていることも確認する必要があります。インポート メカニズムによって、ソース エンコーディングを指定する方法が異なるため、「読者の演習」として残しておく必要があります。
次に、データを SQL サーバーに送信するときは、正しい SQL 入力メカニズムを使用していることを確認する必要があります。クエリをパラメータ化していない場合 (そうすべきです)、クエリにテキスト パラメータを入れるときは、'MyText' ではなく N'MyText' フォームを使用することを忘れないでください。テキストをパラメータ化する場合、adVarChar を使用している場合は、代わりに adVarWChar を使用する必要があります。(各 ADO データ型に対応する「W」型があります)。
さらに、一部のブラウザでは、コンテンツの言語に適したフォントでテキストを表示するためのヒントとして、HTML の LANG 属性が使用されます。コンテンツの言語がわかっている場合は、任意の HTML 要素 (BODY を含む) に LANG="ja-jp" を追加できます。次に、その言語の適切なデフォルト フォントをブラウザで使用する必要があります (ただし、必要に応じて明示的に指定できます)。過去 5 年間に作成されたほとんどのブラウザーは、特定の言語に不適切な既定のフォントを選択した場合でも、フォント リンクの魔法を実行しますが、適切なフォントを使用すると、より信頼性の高い結果とわずかに優れたレンダリング パフォーマンスが得られます。
追加のメモとして、ブラウザでエンコードを手動で shift-jis として強制したときにほぼ正しい結果が得られた場合、それはおそらく文字セット <%@codepage=1252%> として windows-1252 を使用していることを意味します。コンテンツが完全に台無しにされていないことは幸運です。ホースをかけた Shift-Jis-in-1252 または iso-8859-1 を復元できるハックがいくつかありますが、100% 信頼できるわけではありません。
SQL サーバーでの照合に関しては、これには 2 つの影響があります。NVARCHAR および NTEXT フィールドでは、並べ替えとクエリ (大文字と小文字、アクセント、かなの区別を含む) にのみ影響します。varchar および text フィールドでは、エンコーディングにも影響しますが、問題に対する最も賢明な解決策ではありません。