首页 > 解决方案 > 使用 HTML 和 Classic ASP 读取、写入和显示 Unicode 字符

问题描述

我在标题中有一个 ASP 页面:

<%@CodePage=65001 %>
<%  response.codepage=65001
    response.charset="utf-8" %>
<head>
<meta charset="utf-8">
</head>

我通过另一个 ASP 文件从 MS SQL 数据库表(包含带有重音符号等的法语字符)中检索数据,然后使用 Javascript 将该文本动态插入到我的页面中,一切看起来都很完美。

请注意,如果我去掉所有的标头代码,它仍然可以正确显示。但我在页面上的其他硬编码字符(如“ ” ' ' - 等)不显示。所以我把标题代码留在里面。

我有另一个“添加到购物车”ASP 文件,它检索相同的数据并将其插入到购物车表中。我暂时在我的脚本中显示数据,以便查看我插入的内容,但文本被扭曲了。例如:

réexpédié

代替:

réexpédié

当我检查购物车表时,它也在那里变形。

如果我在我的“添加到购物车”ASP 文件的顶部插入这个:

<meta charset="utf-8">

...屏幕上的显示看起来不错,但存储在购物车表中的数据仍然失真。我不确定为什么它在屏幕上看起来不错,因为在我的主 ASP 文件(我插入相同文本的地方)中,是否包含元标记并不重要。

我对我的代码的哪些部分导致文本正确显示以及哪些部分导致它失败感到困惑。

即使查看检索数据以供 Javascript 插入的 ASP 文件,如果我在浏览器中加载该 URL,文本也不正确。但是当我将它插入主 ASP 页面时,它是正确的。如果我将元标记添加到第一个 ASP 文件,现在这是正确的。但是在主页上,我是否包含元标记都没有关系。

我该如何解决这个问题,以便在所有这些情况下获得一致的文本字符?

标签: sql-serverunicodeasp-classic

解决方案


作为一名多年来专注于经典 ASP 的法国程序员(是的,仍然如此),除了您的标题说明之外,我认为这Session.CodePage = 65001也可能对您有所帮助。

在许多网站/内联网/外联网上,在 HTML 页面和 web 应用程序的 Javascript 部分中正确显示重音国际字符(如法语字符)对我有用的是每个页面顶部的确切顺序,是否正在显示数据以 HTML 和/或 JS 格式发送到浏览器,或者只是执行一些后端任务,例如插入数据库。在每个经典 ASP 页面上使用它:

<%@codepage=65001%>
<%
Session.CodePage = 65001
Response.CodePage = 65001
Response.CharSet = "utf-8"
%>

然后

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

另请注意,如果您Session.CodePage从一个页面更改为另一个页面,这将混淆下一个加载页面上显示的字符。确保您与此Session.CodePage属性一致。如果你搞砸了,回收 IIS 应用程序池然后重新开始你的测试。


推荐阅读