2

私の会社では、多くの列を varchar から nvarchar に変換しました。

スマート クォート (ALT+0146 ') を画面に表示し、それを永続化のために SQL Server 2000 データベースに送り返すと、スマート クォートが壊れてしまいます。

私の質問:

ASP サーバー側コードは、どのようにしてスマート クォート ' を破損する可能性がありますか?

編集:私の質問はこれに似ているようです。ちなみに、Powerpoint のコンテンツでは、スマート クォートがミックスに導入されました。ただし、前に述べたように、私は ASP ページを扱っていますが、参照されている質問は PHP ページに関するものです。

編集: サーバー側のディレクティブCODEPAGE=65001により、ページが正しくレンダリングされますが、Windows 2000 ボックスではコンテンツが「西ヨーロッパ」として投稿されます。誰かが理由を知っていますか?

4

4 に答える 4

2

何かが ANSI と Unicode の間で暗黙の変換を行っているようです (そして、プロセスで間違ったコード ページを選択しています)。手動で変換を行い、正しいコード ページを指定する必要がある場合があります。コードを見ないとなんとも言えません。

于 2010-06-21T19:09:26.977 に答える
2

これを見てください:

http://support.microsoft.com/kb/232580

おかしな文字が表示されないように、ASP でコード ページを設定することをお勧めします。

于 2010-06-21T19:12:04.797 に答える
1

使用するエンコーディングをサーバーに指示する必要がありますが、ページエンコーディングとは何かをクライアントに指示しましたか?そうでない場合、クライアントは、ユーザーが最後に明示的に選択したエンコーディング、またはシステムのデフォルトエンコーディングを喜んで投稿します。これは、ほとんどの米国または西ヨーロッパのマシンでは西ヨーロッパである可能性があります。

あなたのhtmlで、あなたはあなたの<head>にこのようなものを持っていますか?

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

これをResponse.Headersで明示的に送信するようにサーバーに要求することもできます。HTTPヘッダーで送信するのは良い考えだと思いますが、何らかの理由でドキュメントをローカルに保存することを決定した人にとっても、HTMLに含めると便利です。

于 2010-06-21T20:46:40.327 に答える
0

VBScript は Unicode 文字を壊す可能性があります。特に古いバージョンの IIS (つまり、Windows Server 2000 上の IIS 5.0) では。

私の場合、For Each構造が原因でした。

POST の後に実行されるコードの例を次に示します。

Response.Write Request.Form("selOptions")(0) ' A-OK! - Displays Unicode characters fine!  
For Each sOption in Request.Form("selOptions")
  Response.Write sOption ' Bad! Unicode characters are mangled!  
Next

いつものように、走行距離は異なる場合があります。

于 2010-06-24T15:56:49.000 に答える