Asp classic ASP服务器端代码如何损坏智能报价;?

Asp classic ASP服务器端代码如何损坏智能报价;?,asp-classic,vbscript,iis-5,windows-server-2000,smart-quotes,Asp Classic,Vbscript,Iis 5,Windows Server 2000,Smart Quotes,我的公司刚刚将许多栏目从varchar转换为nvarchar 现在看来,当我们将一个智能报价(即ALT+0146')呈现到屏幕上,然后将其发送回SQL Server 2000数据库进行持久化时,智能报价将被损坏为-1™ -. 我的问题: ASP服务器端代码如何损坏智能报价 编辑:我的问题似乎类似于。顺便说一句,Powerpoint内容在混合中引入了巧妙的引语。然而,正如我之前所说,我正在处理一个ASP页面,而引用的问题涉及一个PHP页面 EDIT:服务器端指令CODEPAGE=65001使页面正

我的公司刚刚将许多栏目从varchar转换为nvarchar

现在看来,当我们将一个智能报价(即ALT+0146')呈现到屏幕上,然后将其发送回SQL Server 2000数据库进行持久化时,智能报价将被损坏为-1™ -.

我的问题:

ASP服务器端代码如何损坏智能报价

编辑:我的问题似乎类似于。顺便说一句,Powerpoint内容在混合中引入了巧妙的引语。然而,正如我之前所说,我正在处理一个ASP页面,而引用的问题涉及一个PHP页面


EDIT:服务器端指令
CODEPAGE=65001
使页面正确呈现,但它仍然在Windows 2000框中以“西欧”的形式发布内容。有人知道为什么吗?

看起来好像有什么东西在进行ANSI和Unicode之间的隐式转换(并在转换过程中选择了错误的代码页)。您可能需要手动执行转换并提供正确的代码页。很难说不看代码。

看看这个:


您可能希望在ASP中设置代码页,这样就不会得到hokey字符。

虽然您确实需要告诉服务器使用哪种编码,但您是否已经告诉客户端页面编码是什么?如果没有,客户端将很高兴地发布用户最后明确选择的任何编码,或系统默认编码,在大多数美国或西欧机器上可能是西欧编码

在您的html中,您的html中是否有类似的内容



您还可以要求服务器在Response.Headers中显式发送此消息。虽然我认为将其发送到HTTP头中是一个好主意,但将其包含在HTML中对于出于任何原因决定在本地保存文档的人来说也是很有帮助的。

VBScript可能会损坏Unicode字符;尤其是旧版本的IIS(即Windows Server 2000上的IIS 5.0)

在我的例子中,每个构造都有一个

下面是一些在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

与往常一样,您的里程数可能会有所不同。

+1:这一点很好。是的,我确实在header节点中有meta标记。但是,我认为我没有要求服务器在响应头中显式地发送该消息。是否有我应该查看的配置设置?如果使用html方法,则不需要。虽然我认为IIS中有一个站点范围HTTP头的配置选项,但我认为应用它不是一个好主意,除非您确定所有页面都在处理UTF-8。%E2%80%99实际上是smartquote的UTF-8。您正在使用参数化查询吗?参数化查询的类型是否设置为SQL的NVARCHAR类型?如果不使用参数化查询,是否在SQL中使用Unicode标记?(例如N'mytext')?最后,您可能需要在读取表单值之前设置Request.CodePage=65001。也是一个检查的好地方。(不记得旧式asp是否支持Request.CodePage;如果不支持,请尝试Session.CodePage)。
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