codepage 65001和utf-8是一回事吗?

问题描述 投票:47回答:4
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!--#include file="conn.asp"-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

上面的代码对吗?

asp-classic codepages
4个回答
50
投票

是的,没错。

UTF-8在Windows中是CP65001(这只是传统codepage东西中指定UTF-8的一种方式)。据我所知,当这样指定时,ASP可以处理UTF-8。


10
投票

你的代码是正确的,尽管我更喜欢在代码中设置CharSet而不是使用元标签:-。

<% Response.CharSet = "UTF-8" %>

代码页65001确实提到了UTF-8字符集。你需要确保你的asp页面(以及任何包含的内容)如果包含任何标准ASCII字符集以外的字符,都被保存为UTF-8。

通过在 <%@ 块中指定 CODEPAGE 属性,你就表明任何使用 Response.Write 写入的内容都应该被编码为指定的 Codepage,在本例中是 65001 (utf-8)。 值得注意的是,这不会影响任何静态内容,因为静态内容是逐字节发送到响应的。 因此,为什么需要使用指定的代码页实际保存文件。

响应的CharSet属性会设置Content-Type头的CharSet值。 这对我的内容如何被编码没有影响,它只是告诉客户端正在接收什么编码。 同样重要的是,他的值要与实际发送的编码相匹配。


4
投票

是的,65001是UTF-8的Windows编码页面标识符,如文档中所述。在微软网站上. 维基百科建议 IBM代码128页和SAP代码4110页也是UTF-8的指标。


1
投票
response.codepage = 65001

当物理文件保存为utf-8时,似乎会产生不好的结果。

否则,它的工作就会像它应该的那样。

© www.soinside.com 2019 - 2024. All rights reserved.