`

IE6 发送奇数个汉字出现的BUG 传参时 .NET

 
阅读更多

最近在有.NET 修改一个项目的部分,原打算用传参的方式把一个页面的汉字参数 送到另一个页面。当然我的机子是WINDOWS7 浏览器有 ie8 和火狐 在这两个浏览器上测试的时候没有问题,可是用户的浏览器仍然是大众化的ie6 。结果用户发现当汉字为奇数的时候修改该值,该参数传送就失败了(跳转到下一个页面失败) , 而偶数个反而没有事。后台在网上搜索了一番。发现时ie6对 utf-8支持不是很好,也就说说村子BUG。

我当时的解决方法第一个就是:

利用escape()函数来解决:在js中加了escape()函数

escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。

语法

escape(string)
参数 描述
string 必需。要被转义或编码的字符串。

返回值

已编码的 string 的副本。其中某些字符被替换成了十六进制的转义序列。

说明

该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。其他所有的字符都会被转义序列替换。

提示和注释

提示:可以使用 unescape() 对 escape() 编码的字符串进行解码。

注释:ECMAScript v3 反对使用该方法,应用使用 decodeURI() 和 decodeURIComponent() 替代它。

下面是我的js传参部分:

var actionUrl = "news_type_edit.aspx?action=addchild";
actionUrl += "&id=";
actionUrl += id;

actionUrl += "&name=";
actionUrl +=escape(name);

后来为了避免潜在问题:没有使用它 。只是单单传送一个id值 然后通过数据库获取其他相关的数据。

网上一些说明缘由(搜索的):

原理:见下文——在windows操作系统上使用IE作为浏览器时,常常会发生这样的问题:在浏览使用UTF-8编码的网页时,浏览器无法自动侦测 (即没有设定“自动选择”编码格式时)该页面所用的编码,即——当网页标题是中文时,可能会出现打不开网页的情况;即使网页已经声明过编码格 式:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />也会造成某些含有中文UTF-8编码的页面产生空白输出。

如果使用的是Mozilla、Mozilla Firefox、Sarafi的浏览器这不会造成这个问题。这是由于IE解析网页编码时以HTML内的标签优先,而后才是HTTP header内的讯息;而mozilla系列的浏览器则刚刚相反。

由于UTF-8为3个字节表示一个汉子,而普通的GB2312或BIG5是两个,因此,页面输出时,由于上述原因,使浏览器解析、输 出<title></title>的内容时,如果在</title>前有奇数个全角字符时,IE把UTF-8当作两 个字节解析时出现半个汉字的情况,这时该半个汉字会和</title>的<结合成一个乱码字,导致IE无法读 完<title>部分,使整个页面为空百输出。而这个时候如果察看源文件的话,会发现实际上整个叶面全部已经输出了。

因此最简单的解决办法是再网页文件的<head></head> 标签中一定要把字符定义<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 放在<title></title>之前。

在这想给一些想用ie6传参(汉字)的家伙提个醒,它容易出错。除非用户是更高的版本。

分享到:
评论

相关推荐

    CSS IE6奇数宽度或高度的bug

    IE6还有奇数宽度的bug,解决方案就是将外部相对定位的div宽度改成偶数。查看源码: CSS代码 #out { width: 609px;/*这里宽度为奇数,bug就出现了!!改成偶数就OK了*/ height: 300px; position: relative; ...

    奇数个中文字符url传递乱码

    当URL中包含奇数个中文字符时,可能会出现乱码的情况,这不仅会影响用户体验,还可能导致程序逻辑错误。本文将深入探讨“奇数个中文字符URL传递乱码”的问题,并提供一种可行的解决方案。 ### 一、问题背景 #### ...

    FastReport.NET中文用户手册2019

    ### FastReport.NET中文用户手册2019知识点总结 #### 报表概念 - **报表**: 快速报告系统中的核心元素,用于呈现数据的一种结构化格式。 - **报表设计器**: 一种工具,用于设计、编辑和预览报表布局及元素。 - **...

    IE6中奇数宽高的BUG

    其中,一个经常被讨论的奇数宽高BUG就是,在IE6中,当给定一个元素的宽度或高度为奇数值时,该元素在页面上可能会出现1像素的偏移,从而导致布局错乱。在本文中,我们将详细探讨IE6中的这个奇数宽高BUG,并提供解决...

    ASP.net面试很全面

    在ASP.NET面试中,考察的知识点广泛而深入,涵盖了许多关键概念和技术。以下是一些重点内容的详细解释: 1. 访问修饰符的理解: - `private`:私有成员只能在定义它的类内部访问,提供数据封装。 - `protected`:...

    .NET经典面试题

    .NET框架是微软开发的一款用于构建跨平台应用程序的开发工具包,它包含了丰富的库、语言支持以及运行时环境。在.NET面试中,常见的问题涉及到语言特性、面向对象编程、Web开发技术以及算法等核心概念。 1. 访问修饰...

    从1到n的奇数序列,统计3出现的次数

    计算从1~n的奇数序列,统计3出现的次数,源于网络流传的一个段子。 实际上这题是Leetcode中一个题目的变种,即1~n中,1出现的次数。 该代码主要考虑缩减时间复杂性。其实原理与这个题目相同,稍作变化即可,把1换成...

    快速傅里叶变换(FFT)VB.NET实现

    在实际编程时,VB.NET开发者可能会先编写一个基础的单线程FFT函数,然后逐步添加如位反转、复数运算等功能。最后,结合用户界面,实现数据输入、计算和结果显示的完整流程。考虑到性能优化,可能还需要考虑是否使用...

    ASP.net面试题

    ASP.NET面试题主要涵盖C#基础、ASP.NET特性和编程实践等多个方面,这些知识点对于准备ASP.NET相关的面试至关重要。以下是对这些题目所涉及知识点的详细解释: 1. 访问修饰符(private、protected、public、internal)...

    IE6兼容性问题及IE6常见bug详细汇总

    2. **边距加倍问题**:当块元素设置左右浮动并有`margin`时,IE6会出现“margin双倍”现象。通过将元素的`display`属性设置为`inline`,可以消除这一问题。 3. **奇数字体大小和边框高度**:在IE6中,如果字体大小...

    ASP.NET面试题大全(Word)

    - 给定一个奇数m,表达式1-2+3-4+...+m的求和可以通过循环计算,对每个数判断奇偶性,奇数项加到总和,偶数项减去。 以上知识点涵盖了ASP.NET的基础语法、面向对象特性、页面交互、算法以及数据存储等多方面内容,...

    ASP.NET中split的用法

    在ASP.NET中,`Split`方法是处理字符串分割的一个强大工具,它允许开发者根据特定的分隔符将字符串拆分成数组。以下是从给定文件中提取的关于ASP.NET中`Split`方法使用的详细知识点,包括不同场景下的应用实例。 ##...

    .net 最全最新面试题

    .NET框架是Microsoft开发的一个强大的开发平台,用于构建各种应用程序,包括Web应用(B/S结构)。以下是对.NET面试中常见问题的详细解答: 1. **访问修饰符**:`.private`、`.protected`、`.public`和`.internal`是...

    VB.NET WORD手动双面打印

    在VB.NET中,手动双面打印是通过编程方式控制Word应用程序进行的一种打印方式,它能够帮助用户节省纸张,尤其适合处理多页文档时。在实际应用中,手动双面打印通常涉及到两个主要步骤:首先打印奇数页,然后翻转纸张...

    100道ASP.NET面试题(经典)

    6. B/S结构传递变量值的替代方案:当不能使用Session、Cookie和Application时,可以考虑使用隐藏字段、ViewState、TempData或者在URL中编码传递数据。 7. 遍历TextBox控件并清空值:通过控件集合遍历,利用类型检查...

    .net后台判断某个经纬度是否在经纬度多边形内

    在.NET开发环境中,尤其是使用C#语言进行ASP.NET后端编程时,有时我们需要处理地理空间数据,例如判断一个经纬度点是否位于一个多边形区域内。这个需求常见于地图应用、地理信息系统(GIS)或者物流配送等领域。下面...

    .NET比较有用的面试题

    根据提供的文件信息,我们可以整理出以下关于 .NET 面试相关的知识点: ### 1. 访问修饰符的理解 - **private**: 变量或方法只能在其所在的类内部访问。 - **protected**: 可以在当前类及其派生类中访问。 - **...

    vb.net代码 如何实现简单的图片浏览器

    在VB.NET中,创建一个简单的图片浏览器涉及到多个关键知识点,包括控件的使用、事件处理、文件操作以及图像处理。以下是对这些知识点的详细说明: 1. **控件使用**: - `PictureBox`: 用于显示图片的主要控件,...

    给定N个正整数,请统计奇数和偶数各有多少个-C语言代码

    在本题目中,我们需要使用C语言编写一个程序,该程序能接收用户输入的N个正整数,并统计其中奇数和偶数的数量。这是一道基础的编程练习,旨在帮助学习者掌握C语言的基本语法、循环结构以及条件判断。下面我们将详细...

Global site tag (gtag.js) - Google Analytics