ASP编码问题

asp下UTF-8页面乱码的解决方法 为什么在ASP里指定了codepage为65001还经常显示乱码.才子在这里将这个问题详细解释一下,以免很多朋友再走弯路,甚至排斥UTF-8. 如果你还不知道UTF-8是什么东东,那才子建议你先去搜索一下UTF-8的相关资料吧. UTF-8编码之所以被越来越多的人接受甚至喜欢,肯定是有道理的,在WEB2.0盛行的今天,在大谈多浏览器兼容的同时,不得不想到字符编码不同所造成的乱码现象同样需要得到很好的处理….. 在N年以前,IE6以下的所有版本,只要没有安装相应的字库,访问相关的页面都是会乱码的,例如,我是IE5 (Windows2000默认) 的版本,在没有安装IE繁体字库的情况下,访问任何繁 立即下载

哪的资料都不如官方资料权威。今天总算从MSDN中择出了ASP编码问题的解决方案。

下面是MSDN中的一段话。

Setting @CODEPAGE explicitly affects literal strings in a single response. Response.CodePage affects dynamic strings in a single response, and Session.CodePage affects dynamic strings in all responses in a session.

这句话解释清楚了@CODEPAGE,Response.CodePage,Session.CodePage 分别的作用是什么。

@CODEPAGE作用于所有静态的字符串,比如某文件中的 const blogname="我的家"

Response.CodePage,Session.CodePage作用于所有动态输出的字符串,比如<%=blogname%>

这句话很关键的是说明了Response.CodePage的作用范围是a single response,而SXNA中声明的Session.CodePage的作用范围是all responses in a session。

再看另外一句话。

If Response.CodePage is not explicitly set in a page, it is implicitly set by Session.CodePage, if sessions are enabled. If sessions are not enabled, Response.CodePage is set by @CodePage, if @CodePage is present in the page. If there is no @CodePage in the page, Response.CodePage is set by the AspCodePage metabase property. If the AspCodePage metabase property is not set, or set to 0, Response.CodePage is set by the system ANSI code page.

这句话我乍一看,把意思理解成了这样:在sessions are enabled的时候,如果Response.CodePage没有声明,则Response.CodePage会被Session.CodePage赋值。如果sessions are not enabled的时候, 如果@CodePage已声明,则Response.CodePage会被@CodePage赋值,等等.............

这句话解释了为什么从SXNA中出来以后进入一些别的页面比如oblog,z-blog等等容易出现乱码,因为其他程序没有声明Response.CodePage而恰巧SXNA声明了Session.CodePage,因此一进入SXNA,Session.CodePage立即被赋值(版本不同,有的版本赋了936有的版本赋了65001),而后进入其他程序的时候Response.CodePage马上被Session.CodePage赋值,如果这时Response.CodePage与页面本身编码不一样的话,页面就会出现乱码。所以进入z-blog出现乱码的时候我查了当时的Session.CodePage和Response.CodePage都是936,而进入oblog出现乱码的时候Session.CodePage和Response.CodePage都是65001.就是说要想保证叶面不出现乱码,应该声明Response.CodePage,否则他就会按照Session.CodePage来解释网页(而不是按照@codepage解释网页).

如果仅仅按照上面的解释的话,我实际上是很糊涂的,因为我们都是用的中文操系统,当每一次进入浏览器的时候你可以尝试输出Session.CodePage,能看到他都是936!为什么进入Z-blog的时候他不把默认的Session.CodePage的936赋给Response.CodePage呢?反而把@CodePage给了Response.CodePage?什么情况下Session.CodePage才赋值给Response.CodePage呢?原文的sessions are enabled应该如何理解呢?

也许上面的话应该这样理解:

在Session.CodePage被任何程序声明的时候,如果Response.CodePage没有声明,则Response.CodePage会被Session.CodePage赋值。如果Session.CodePage没有被任何程序声明的时候, 如果@CodePage已声明,则Response.CodePage会被@CodePage赋值,....,最后的页面动态内容部分按照Response.CodePage的值解释。

因为Zblog和Oblog都声明了@CodePage,所以,用户刚刚启动完机器然后进入浏览器浏览Zblog和Oblog的时候Response.CodePage会被@CodePage赋值,于是叶面显示正常。

这句话进一步解释了产生乱码的原因

If you set Response.CodePage or Session.CodePage explicitly, do so before sending non-literal strings to the client. If you use literal and non-literal strings in the same page, make sure the code page of @CODEPAGE matches the code page of Response.CodePage, or the literal strings are encoded differently from the non-literal strings and display incorrectly.

其中比较有用的一句话是说如果Response.CodePage和@CODEPAGE不一样的话会产生乱码。也就是说当Z-blog的@CODEPAGE=65001而Z-blog的Response.CodePage被Session.CodePage赋为936的时候就会出现乱码,oblog反之亦然。

不知道上面说了这么多解释清楚没有-_-||

下面解释一下为什么SXNA有时会把Session.CodePage赋为936,我有一个版本是这样写的:

<% OriginalCodePage=Session.CodePage %>

.......

<% Session.CodePage=OriginalCodePage %>

当用户进入浏览器的时候Session.CodePage默认为936,这个时候的默认936不是程序声明的,因此不会赋给Response.CodePage,当进入SXNA的时候,Session.CodePage被上面那段代码一折腾就变成了程序声明的Session.CodePage=936,因此再进入Zblog的时候就把936给了Response.CodePage。

至此,全部原因已经分析清楚了。

因此说,保证asp叶面一定不会出现乱码的代码应该是这样的:(假定是UTF-8的叶子)

<%@ CODEPAGE=65001 %>

<% Response.CodePage=65001%>

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

进一步说明为什么要加Response.Charset,因为MSDN说应该加...呵呵

If the code page is set in a page, then Response.Charset should also be set.

另外,文件的编码格式应该与@CODEPAGE一样:

The file format of a Web page must be the same as the @CODEPAGE used in the page.

这就是为什么zblog,pjblog等一些程序要吧文件存成UTF8编码格式的原因.

综上,如果所有的程序都声明了Response.CodePage就不会被Session.CodePage干扰而出现乱码了。所以Session.CodePage还是不能轻易用的!

 

网课、网页视频倍速播放简单脚本 一个简单的网页视频倍速脚本 阅读详情

相关推荐

Halcon形状模板匹配实战:inspect_shape_model参数优化指南

本文深入解析Halcon形状模板匹配中inspect_shape_model参数的优化技巧,涵盖NumLevels和Contrast参数的实战应用。通过具体案例展示如何平衡匹配速度与精度,帮助开发者高效调试形状模型,提升工业视觉检测的准确性和效率。

weixin_30342209的博客 618

ASP运行乱码怎么回事?

其实是utf-8是没错的,只是需要给他明确一下,原来的请求是这样的。asp使用utf-8编码乱码,是设置错误造成的,解决方法如下:首先在浏览器的开发者上面查看了源代码,发现是utf-8。编码不一致造成的,utf-8和gb2312是不能一起用的,你可以用记事本打开页面文件,选择另存为,在最下方的那个编码的选项里面选择一个,这样才能统一编码。这是由于编码有误,你是不是其中的代码从别的文件中复制过来的,如果出现乱码,首先将开头写上也就是采用gb2312的方式编码,还有就是utf-8 的编码方式。

aoxiangchina的博客 2064

Python的WNTR库---基于供水网络

WNTR使用小结(一) 本人最近主要再做设施网络的内容,主要聚焦供水管网(water distribution network,WDN),在做实验中主要用的包为WNTR,下载连接: 链接: WNTR.最好安装最新版本 如果有做这方面研究的小伙伴们需要测试数据可以直接从WNTR实例数据中下载,其中提供了四种规模大小的管网,格式为.inp,可以搭配Epanet使用。如果需要更多示例数据可私信我! 以下内容全部为本人自己探索的小心得,希望能给你带来一点点帮助,如果不够详尽可以自行参阅官方文档:链接: 官方文档.

pushhy的博客 4934

ASP 编码问题,乱码解决

编码:UTF-8 、65001 例如 : asp 网站第一行写的是 <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> 这里的65001是指ASP采用的编码为UTF-8 另一种写法是 <% response.codepage=65001 response.charset="UTF-8" %> 编码:GBK、GB2312、...

橙-极纪元-JJYCheng 665

Time-Interleaved Analog-to-Digital Converters

  这篇论文提供了时间交错模数转换器的教程回顾。在解释了偏置、增益、定时和其他不匹配对变换器性能的影响后,给出了目前解决不匹配问题的方法。论文最后总结了时间交错模数转换器的现状。 1.简介   时间交错模数转换器(ADC)将多个子ADC组合成一个ADC系统,可以实现比单独的子ADC[1]更快的采样速率。历史上,时间交错adc的主要缺点是需要紧密匹配子adc[2]的特性。近年来,由于应用需要非常宽带信号的数字化、功率高效子adc的可用性以及由深亚微米互补金属氧化物硅(CMOS)技术实现的微调技术,使得时间交错

weixin_44537056的博客 6733

如何理解鲁棒性?为什么robustness会翻译为鲁棒性?

鲁棒性,英文为Robustness(承受故障和干扰的能力),是许多复杂系统(包括复杂网络)的关键属性。复杂网络的鲁棒性研究对许多领域都非常重要。本文着重介绍了鲁棒性的基本定义、命名起源、分类区别、提升方法和具体应用,供大家学习参考。

weixin_46880696的博客 8万+

Langchain.js AI智能体架构与openclaw引擎开发实践指南

AI智能体作为人工智能领域的重要分支,通过模拟人类的推理-行动过程实现复杂任务处理。其核心原理基于ReAct模式,智能体通过循环执行推理决策和工具调用来完成多步骤任务。在技术价值方面,AI智能体能够显著提升系统的自主决策能力和任务处理效率。特别是在前端开发领域,结合Langchain.js框架和openclaw引擎,开发者可以构建具备状态持久化、工具扩展等核心功能的智能体系统。这类技术广泛应用于智能客服、数据分析助手、自动化流程处理等场景。本文重点探讨如何基于Langchain.js的模块化架构和openc

banglvfei0870的博客 473

YoloV8改进策略:基于双层路由注意力的视觉Transformer提升YoloV8的检测能力

本文使用2023年最新提出的BiFormer,实现对YoloV8的改进。目前,BiFormer还有在显存占用,还有性能存在问题。我们先试试效果,期待作者在Pytoch上早日实现优化。论文链接:https://arxiv.org/abs/2303.08810代码链接:https://github.com/rayleizhu/BiFormer作为视觉transformer的核心构建模块,注意力是捕捉长程依赖关系的强大工具。

m0_47867638的博客 2845

ASP中编码问题的说明

1.关于session中编码说明   默认情况下,编码是GB2312格式输出中文,如果想修改成UTF-8格式输出中文,需在页面中加入Session.CodePage=65001 2.关于输出xml文件的编码格式   输出为UTF-8格式代码:       q=chr(34)'表示引号       t=chr(9)'表示Tab键       hh=chr(10)&chr(13)'表示换行

talent8854的博客 736

看完就会!手把手教您如何正确开启飞牛Nas 虚拟机的 IOMMU 硬件直通,让虚拟机的性能飙升!

看完就会!手把手教您如何正确开启飞牛Nas 虚拟机的 IOMMU 硬件直通,让虚拟机的性能飙升!

XiaoqiangClub的博客 1万+

已解决“TimeouEror [WinEror 10060由于连接方在一段时间后没有正确答复 或连接的主机没有反应,连接尝试失败“,亲测有效!!!

已解决"TimeouEror [WinEror 10060由于连接方在一段时间后没有正确答复 或连接的主机没有反应,连接尝试失败",亲测有效!!!

wbajsjhhhhh的博客 1万+

ASP中Utf-8与Gb2312编码转换乱码问题的解决方法

在浏览utf-8编码的页面后,再浏览当前网站gb2312的页面,gb2312编码的页面就会出现乱码。在各网页中根据需要可以修改。

goolean的专栏 1919

Python 安装 PyTorch(GPU)详细教程

本章教程,介绍如何安装PyTorch GPU版本的具体教程。

猿小白的博客 1635

asp编码问题

asp编码问题 转载于:https://blog.51cto.com/lqx049/551926

weixin_33743703的博客 73

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

asp.net 文件编码问题

在进行 asp.net 开发过程中,经常遇到页面要引用美编们的 javascript 文件。而他们做的这些文件大多是 gb2312 编码。程序这边使用 VS 开发的时候经常会弹出:做的时候不理它,等页面预览的时候 JS 就出错了。想想是编码的问题(因美编出的页面没这个问题),于是在 web.config 节加入:<system.web><globalizationfil...

weixin_30273931的博客 150

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

解决ASP编码的乱码问题

<br />只要把以下四个地方都设成统一的编码就OK了~ 一、< %@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> 二、< META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> 三、< %Response.Charset="utf-8"%> 四、< %Session.CodePage=65001%> 注:要去了前边的一个空格,第一点要放到文件的第一行 gb231

shinehouse的专栏 490

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

asp.net url编码问题处理

关于中文要进行url编码本是常识的东西,可是在有些复杂的环境中,编码是让人很头痛的东西。 最近调试了一个url编码问题。 页面编码格式是gb2312,可是配置的编码格式是utf-8 使用aspnetpager分页控件 具体使用是: url参数是中文,可是我要使用aspnetpager进行url重写,aspnetpager重写参数格式%a%,且a不能进行编码的特殊处理,只能自己从url处获取

飞 2226

在asp.net页面中的一些有关编码的问题

1、问题:在asp.net页面中无法使用引入的javascript脚本原因:编码不一致在web.cofing配置文件中设置了            requestEncoding="utf-8"             responseEncoding="utf-8"    />asp.net页面使用gb2312编码存储javascript脚本文件使用gb2312编码存储因为全局请求使用utf8编

herongxin的专栏 852

asp汉字编码问题

今天刚学习了vbscript部分就遇到了很怪的问题。书本提供的源代码和我手工在DW中输入的源代码表面显示一模一样,用记事本一个个字母看了的,用文本比较工具uc也没有比较出来不同,但是书上提供的源代码能够运行,手工输入的源代码不能运行。最后用fc命令进行比较,则出现如下问题: 正在比较文件 D:\ASPTEST\11.asp 和 D:\ASPTEST\22.ASP ***...

weixin_33849942的博客 229

解决ASP因为编码问题出现乱码现象:ASP中强制编码方式

如果你发现浏览页面的时候出现乱码。你可以尝试一下步骤: 确保你页面本身编码格式正确:例如test.asp中使用charset=utf-8,那么请先确保这个文件本身就是Utf-8编码的。你可以利用记事本进行转换。同样如果使用charset=GBK,请先确保这个文件本身就是GBK编码的。 确认你得到的原数据(例如从数据库中得到的数据)编码方式与页面编码方式一至。 尝试指定IIS按什么编...

weixin_30572613的博客 248

ASP页面编码问题

1.作用 MSDN: Setting @CODEPAGE explicitly affects literal strings in a single response. Response.CodePage affects dynamic strings in a s

1351

asp wap开发编码问题

四个地方的编号要统一:1.文件编码;2.wml内容编码:3.asp编码:4.每个asp页编码一致,不然post回来的也是乱码ikmb@163.com

ikmb的专栏 834

ASP编码问题的研究和解决方案

哪的资料都不如官方资料权威。总算从MSDN中择出了ASP编码问题的解决方案。 下面是MSDN中的一段话。 Setting @CODEPAGE explicitly affects literal strings in a single response. Response.CodePage affects dynamic strings in a single response, and Se...

weixin_30746117的博客 77

对于ASP编码问题的深入研究与最终解决方案

哪的资料都不如官方资料权威。今天总算从MSDN中择出了ASP编码问题的解决方案。下面是MSDN中的一段话。Setting @CODEPAGE explicitly affects literal strings in a single response. Response.CodePage affects dynamic strings in a single response, and Sess

GOD'S SON 502

ASP 编码转换(乱码问题解决)

ASP 编码转换(乱码问题解决) 输出前先调用Conversion函数进行编码转换,可以解决乱码问题。 注,“&参数&”为ASP的连接符,这里面很多是直接调用的数据库表字段,实际使用请自行修改后再调试。 <!--GB转unicode---将GB编码文字转换为unicode编码文字--><% function Conversion(Str) ...

weixin_33722405的博客 329
上一篇: 问题研究--字符集编码
下一篇: 彻底解决网络传输过程中出现的中文乱码问题
java05
博客等级 码龄18年 21粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值