`
远去的渡口
  • 浏览: 472868 次
  • 性别: Icon_minigender_2
  • 来自: 上海转北京
社区版块
存档分类
最新评论

中文字符处理encodeURI编码与decodeURI解码

阅读更多

最近做了一个功能,将产生的JfreeChart报表及附加的Summary导出到文章,也就是将这些内容加入到文章所在的表中,然后在页面显示。

问题在于,summary的内容是动态的,并且是样式比较复杂table,一大堆标签,如果在手动后台处理,需要转义N多诸如“”特殊字符,并且,summary的内容已经生成好,并不需要重新拿一遍数据,所以比较好的做法就是,用Ajax以post方式将innerHTML的内容提交到后台,那么,这里出现一个问题,由于innerHTML有标签,中文等,需要编码一下才可以,否则会报编码错误的。

JS部分代码:

function exportArticle(){
var blogId=document.getElementById("blogId").value;
var css=document.getElementById("css").value;
var filename=document.getElementById("filename").value;
// var filename1=document.getElementById("filename1").value;
var start=document.getElementById("start").value;
var end=document.getElementById("end").value;
var strs=document.getElementById("weisummary").innerHTML;
strs=encodeURIComponent(strs);

var reporturl='<%=request.getContextPath()%>/SingularController?service=exportReportToarticle';
var params='blogId='+blogId+'&css='+css+'&filename='+filename+'&types=1&start='+start+'&end='+end+'&constr='+strs;

 new Ajax.Request(	
       reporturl,
        {
            method: 'post',
            parameters: params,
            encoding:  'UTF-8',
            requestHeaders: {Accept:'application/json'}, 
            onComplete: toreport              
        });

}

	function toreport(originalRequest){
	
	var  jsonObj = originalRequest.responseText.evalJSON(false);
	if(jsonObj== true){
	  alert("<s:text key='blog.health.exportArticleSucc'/>");
	}
	    
	
	}

 

 

 

  之前,我用的是encodeURI编码innerHTML的内容,但是出现一个很奇怪的问题,我传的内容比较简单时可以传到service端,如果内容比较复杂就到不了service,后来调试时,发现以encodeURI编码后的内容,&,=等都没有编码,后来到网上查了一下,发现JS编码的方法有三种:

 

(以下是摘抄过来的,呵,因为已经写的很详细了,这里贴一下,原地址是:DIY部落(http://www.diybl.com/course/1_web/javascript/jsjs/200855/113679.html)

 

js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent

1、   传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。

2、   进行url跳转时可以整体使用encodeURI

例如:Location.href=encodeURI("http://cang.baidu.com/do/s?word=百度&ct=21");

3、   js使用数据时可以使用escape

例如:搜藏中history纪录。

4、   escape对0-255以外的unicode值进行编码时输出%u****格式,其它情况下escape,encodeURI,encodeURIComponent编码结果相同。


最多使用的应为encodeURIComponent,它是将中文、韩文等特殊字符转换成utf-8格式的url编码,所以如果给后台传递参数需要使用encodeURIComponent时需要后台解码对utf-8支

持(form中的编码方式和当前页面编码方式相同)

escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z

encodeURI不编码字符有82个:!,#,$,&,'',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z

encodeURIComponent不编码字符有71个:!, '',(,),*,-,.,_,~,0-9,a-z,A-Z

escape 方法
对 String 对象编码以便它们能在所有计算机上可读,

escape(charString)

必选项 charstring 参数是要编码的任意 String 对象或文字。

说明
escape 方法返回一个包含了 charstring 内容的字符串值( Unicode 格式)。所有空格、标点、重音符号以及其他非 ASCII 字符都用 %xx 编码代替,其中 xx 等于表示该字符

的十六进制数。例如,空格返回的是 "%20" 。

字符值大于 255 的以 %uxxxx 格式存储。

注意    escape 方法不能够用来对统一资源标示码 (URI) 进行编码。对其编码应使用 encodeURI 和encodeURIComponent 方法。

encodeURI 方法
将文本字符串编码为一个有效的统一资源标识符 (URI)。

encodeURI(URIString)

必选的 URIString 参数代表一个已编码的 URI。

说明
encodeURI 方法返回一个编码的 URI。如果您将编码结果传递给 decodeURI,那么将返回初始的字符串。encodeURI 方法不会对下列字符进行编码:":"、"/"、";" 和 "?"。请使

用 encodeURIComponent 方法对这些字符进行编码。

encodeURIComponent 方法
将文本字符串编码为一个统一资源标识符 (URI) 的一个有效组件。

encodeURIComponent(encodedURIString)

必选的 encodedURIString 参数代表一个已编码的 URI 组件。

说明
encodeURIComponent 方法返回一个已编码的 URI。如果您将编码结果传递给 decodeURIComponent,那么将返回初始的字符串。因为 encodeURIComponent 方法对所有的字符编码

,请注意,如果该字符串代表一个路径,例如 /folder1/folder2/default.html,其中的斜杠也将被编码。这样一来,当该编码结果被作为请求发送到 web 服务器时将是无效的。

如果字符串中包含不止一个 URI 组件,请使用 encodeURI 方法进行。


 

 

分享到:
评论

相关推荐

    javascript中encodeURI和decodeURI方法使用介绍.docx

    - `decodeURI`用于解码由`encodeURI`编码的字符串。 - `decodeURIComponent`用于解码由`encodeURIComponent`编码的字符串。 - 使用场景:通常情况下,如果使用了`encodeURI`进行编码,则应该使用`decodeURI`来...

    JavaScript、JavaWeb对汉字等的编码与解码处理

    JavaScript、JavaWeb对汉字等的编码与解码处理 JavaScript和JavaWeb对汉字编码的策略是非常重要的,特别是在Web开发中,编码和解码的正确处理对于确保数据的正确传输和显示至关重要。在本资源中,我们将详细介绍...

    javascript编码与解码

    `unescape()`可以解码由`escape()`函数编码的字符串,但这两个函数在现代JavaScript中已不推荐使用,取而代之的是更安全的`encodeURI()`、`encodeURIComponent()`、`decodeURI()`和`decodeURIComponent()`。...

    c#自动判断URL编码方法

    URL中包含编码的中文的时候,程序获取queryString需要根据url的不同编码,采用不同的解码方式,RequestQueryString方法能够自动识别url是用UTF-8编码还是GB2312编码,从而自动获取争取的值。 应用范例:...

    javascript 对url编码 解码

    JavaScript 中对 URL 编码和解码涉及到六个函数:escape、encodeURI、encodeURIComponent、unescape、decodeURI 和 decodeURIComponent。这六个函数的使用场景和特点分别是: escape 函数:escape 函数用于将字符串...

    utf-8解码小程序

    - **`encodeURIComponent`**:用于对URL组件进行编码,它可以处理所有可能出现在URL中的字符,包括那些`encodeURI`不编码的字符。 - **`decodeURIComponent`**:用于解码由`encodeURIComponent`编码的字符串。 ####...

    JavaScript字符集编码与解码详谈

    字符集、编码与解码是计算机科学中的基础概念,尤其在处理文本数据时非常重要。在JavaScript中,字符集、编码与解码的概念涉及到文本在计算机内存中的存储以及在不同系统或网络中传输时的转换问题。本文将详细介绍...

    JS编码-解码.asp(C#)对应解码-编码【精品文档】.doc

    在C#中,对应JavaScript的`unescape`是`decodeURI`,它可以解码由`encodeURI`或`escape`编码的字符串。此外,C#的`Server.UrlDecode`方法用于解码由`Server.UrlEncode`编码的字符串,后者是C#中用于URL编码的标准...

    codeURL编码解码工具

    在IT行业中,URL编码与解码是网络编程中不可或缺的一部分,尤其在处理HTTP请求和URL字符串时显得尤为重要。本文将详细讲解"codeURL编码解码工具"的相关知识点,包括URL编码的原理、用途以及如何使用这类工具进行编码...

    JavaScript使用encodeURI()和decodeURI()获取字符串值的方法

    本文实例讲述了JavaScript使用encodeURI()和decodeURI()获取字符串值的方法。分享给大家供大家参考。具体如下: JavaScript使用encodeURI()和decodeURI()获取字符串值,不能就是地址栏显示的字串,以前经常在网上...

    ios获取数据之encodeURI和decodeURI的实例

    decodeURI 函数是 encodeURI 函数的逆操作,用于解码 URI 编码字符串。例如: `decodeURI("http://baidu.com/s?word=hello%20%E4%BA%91%E6%B7%A1%E7%84%B6");` 这将生成一个解码后的 URI,例如: `...

    JS对URL字符串进行编码/解码分析

    这两个方法可以与JavaScript中的编码和解码函数相媲美,可以在服务器端处理由客户端通过JavaScript编码的URL字符串。 总结起来,JavaScript中对URL字符串进行编码时,优先推荐使用`encodeURIComponent()`,因为它能...

    JS特殊字符处理

    6. **编码与解码**:在处理包含特殊字符的字符串时,我们可能会涉及到字符编码,如UTF-8、ASCII等。JavaScript的`encodeURI()`、`encodeURIComponent()`和`decodeURI()`、`decodeURIComponent()`等函数可以帮助我们...

    javaScript处理URL中特殊符号的处理

    值得一提的是,除了编码之外,解码也是处理URL中特殊字符时不可或缺的另一部分。解码是编码的逆过程,即将百分号编码的字符串转换回原始字符串。在JavaScript中,可以使用`decodeURIComponent`和`decodeURI`函数进行...

    字符串编码的机器

    JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 。 javascript的简单编码机器和解码机器二合一

    JSP中js传递和解析URL参数以及中文转码和解码问题.docx

    本文将详细介绍如何在JSP页面中利用JavaScript进行URL参数的传递和解析,并解决中文字符的编码与解码问题。 #### 二、URL参数传递 在JSP中,通常使用JavaScript来动态构建URL并传递参数。以下是一个典型的例子: ...

    js字符编码函数区别分析

    JavaScript提供了几个内建函数来处理字符的编码与解码,主要的编码函数包括:escape、encodeURI和encodeURIComponent,而对应的解码函数分别为unescape、decodeURI和decodeURIComponent。在本分析中,我们将详细探讨...

    JS的encodeURI和java的URLDecoder.decode使用介绍.docx

    - **编码与解码**:确保编码与解码使用的字符集相同,这里使用的是`UTF-8`。 - **多次编码**:对于包含非ASCII字符的情况,建议进行多次编码处理,以确保所有字符都被正确编码。 - **安全考虑**:虽然这种方法可以...

    javascript 三种编解码方式

    编码和解码操作主要涉及三对函数:escape与unescape、encodeURI与decodeURI、encodeURIComponent与decodeURIComponent。下面详细解释每一对函数的功能及使用场景。 1. escape函数与unescape函数 escape函数用于对...

Global site tag (gtag.js) - Google Analytics