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 回答