`
zhoujm
  • 浏览: 11467 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Javascript的URL编码问题

阅读更多

JavascriptURL编码问题。

Javascript的常用的编码方式:

encodeURIComponent(stringvalue)decodeURIComponent(stringvalue)

encodeURI(stringvalue)decodeURI(stringvalue)

escape(stringvalue) unescape(stringvalue)

现在escape(stringvalue) unescape(stringvalue)已经从ECMAScript v3 已从标准中删除了 ,并反对使用它,因此应该用 decodeURI() decodeURIComponent() 取而代之。

 

Java的编码解码:

URLEncoder.encode(stringvalue,"UTF-8")

对应

encodeURIComponent(stringvalue)

Java解码

URLDecoder.decode(stringvalue,"UTF-8")

对应

decodeURIComponent(stringvalue)

 

淘宝用的框架是WEBXWebX中会把所有的参数按配置进行一次解码,淘宝大多应用系统都是GBK的编码,所以会存在Javascript编码后传给服务端拿到的是错误的编码。原因:

JavascriptAjax请求时:encodeURIComponent()UTF-8编码WebXGBK编码解码出错。解决:encodeURIComponent(encodeURIComponent(stringvalue))两次编码后传送到服务端,WEBX解码后是正常的UTF-8编码的字符串,在用URLDecoder.decode(stringvalue,"UTF-8")进行一次解码得到最后正确编码的汉字。这个在WEB旺旺和阿里云的旺旺服务器的聊天记录的查看是这样的做的。

原来还有很多遗留的系统的前端JS用的escape(stringvalue) unescape(stringvalue)进行的编码的解码。像老得旺旺的亮灯就是这样子做的 ,如:URL

http://webwwtb.im.alisoft.com/wangwang/ww1.htm?t=1293428880513&uid=&tid=%u7EA4%u5C18yoyo

这个URL中:“%u7EA4%u5C18yoyo”(纤尘yoyo)是用escape(stringvalue)进行编码的这个编码在JAVA端是解码不开的,并且我们在服务端用JAVAHttpRequest.getParameter(name)接口取出来时候拿不到“%u7EA4%u5C18yoyo”原样的字符串,Java会自动处理掉这个拿到是:“EA4C18yoyo”,无论怎样也还原不成“纤尘yoyo”。并且我们现在又不能不老的亮灯全部找出来修改成encodeURIComponent(stringvalue)方法。

解决方法:

1、 HttpRequest. getQueryString()拿到所有的求情的参数查询串。

2、 自己写一个JAVA的方法实现 javascriptunescape(stringvalue)的解码方式一样的解码功能。

 

注意:在写前端代码时候一定不要用escape(stringvalue) unescape(stringvalue),用了这两个方法在和服务端交互的时候会产生无法预知的编码错误。建议用:encodeURIComponent(stringvalue)decodeURIComponent(stringvalue)

 

附上javascript的三对编码解码的函数的介绍,附件是Java实现的escape(stringvalue) unescape(stringvalue)

 

encodeURIComponent(stringvalue)方法

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

function encodeURIComponent(stringvalue):String

 

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

说明:

encodeURIComponen()方法返回一个已编码的 URIencodeURIComponent方法对所有的字符编码,请注意,如果该字符串代表一个路径,例如:“/淘宝/index.html”编码后:“%2F%E6%B7%98%E5%AE%9D%2Findex.html”,其中的斜杠也将被编码。这样一来,当该编码结果被作为请求发送到 web 服务器时将是无效的。如果字符串中包含不止一个 URI 组件,请使用encodeURI方法进行编码。

 

 

encodeURI(stringvalue)方法

返回编码为有效的统一资源标识符 (URI) 的字符串。

 

function encodeURI(stringvalue: String) : String

参数

Stringvalue

必选:表示编码 URI 的字符串。

说明:

encodeURI 方法返回一个已编码的 URI。如果将编码结果传递给 decodeURI,则将返回初始的字符串。encodeURI 不对下列字符进行编码:“:”、“/”、“;”和“?”。请使用 encodeURIComponent 对这些字符进行编码。例如:“/淘宝/index.html”编码后是:“/%E6%B7%98%E5%AE%9D/default.html”。

URL最好自己拼接,用encodeURIComponent(stringvalue)编码

 

 

 

escape(stringvalue) 方法

返回一个可在所有计算机上读取的编码 String 对象。

 

function escape(stringvalue: String) : String

参数

stringvalue

必选。要编码的任何 String 对象或文本。

说明:

escape(strinvalue) 方法返回一个包含 stringvalue内容的字符串值(Unicode 格式)。所有空格、标点、重音符号以及任何其他非 ASCII 字符都用 %xx 编码替换,其中 xx 等于表示该字符的十六进制数。例如,空格编码为“%20”, /淘宝/index.html”编码为“/%u6DD8%u5B9D/default.html”。

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

注意:escape 方法不能用来对“统一资源标识符”(URI) 进行编码。对其编码应使用 encodeURI encodeURIComponent 方法。

 

 

decodeURI(stringvalue) 方法

返回一个已编码的统一资源标识符 (URI) 的非编码形式。

function decodeURI(stringvalue: String) : String

参数

stringvalue

必选。表示编码 URI 的字符串。

说明

decodeURI(stringvalue) 方法返回一个非编码形式字符串值,和encodeURI(strinvalue)相对应。如果strinvalue无效,将发生 URIError

 

 

decodeURIComponent(strinvalue) 方法

返回统一资源标识符 (URI) 的一个已编码组件的非编码形式。

 

function decodeURIComponent(stringvalue : String) : String

必选的strinvalue参数是一个表示已编码的 URI 组件的值。

说明:

stringvalue是一个完整的 URI 的一部分,这个方法和encodeURIComponent(stringvalue)方法对应。如果 strinvalue无效,则将产生 URIError

 

unescape (stringvalue) 方法

返回一个已编码的统一资源标识符 (URI) 的非编码形式。

function unescape (stringvalue: String) : String

参数

stringvalue

必选。表示编码 URI 的字符串。

说明

unescape(stringvalue) 方法返回一个非编码形式字符串值,和escape (strinvalue)相对应。

 

分享到:
评论

相关推荐

    URL编码 URL编码

    在实际编程中,大多数编程语言都提供了内置函数来自动进行URL编码和解码,如JavaScript的`encodeURIComponent()`和`decodeURIComponent()`,Python的`urllib.parse.quote()`和`urllib.parse.unquote()`等。...

    JS实现URL编码转换中文

    通过了解URL编码的基础知识以及使用JavaScript内置函数的具体操作方法,可以帮助开发者更好地处理Web应用中的中文字符问题。此外,还讨论了处理更多特殊字符的情况,这对于国际化应用程序来说尤为重要。掌握这些技巧...

    纯Javascript脚本实现GBK URL编解码

    2. **URL编码**:JavaScript的`encodeURIComponent`函数可以对字符串进行URL编码,但默认它只处理UTF-8编码。为了GBK编码的字符串能正确编码,需要先将GBK编码后的字节序列转换为 `%xx` 形式,这可以通过遍历字节...

    url编码转换器

    使用“url编码转换器”这样的工具,用户可以便捷地处理URL中的编码问题,无论是手动输入的链接还是程序生成的链接,都能确保其在传输过程中不会因为特殊字符而引起问题。在开发网页应用或者处理HTTP请求时,理解并...

    javascript 对url编码 解码

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

    一个简单url编码解码

    为了解决这个问题,URL编码应运而生。这个名为“一个简单url编码解码”的项目,就是为新手提供了一个理解和实践URL编码与解码机制的实例。 URL编码是根据RFC 3986标准进行的,主要使用百分号(%)表示非ASCII字符或...

    javascript url几种编码方式详解

    2. encodeURI()是javascript中真正用来对URL编码的函数。编码整个URL地址,但对特殊含义的符号”;/?:@&=+$,#”,也不进行编码。对应的解码函数是decodeURI()。 3. encodeURIComponent()能编码”;/?:@&=+$,#”这些...

    unicode格式的字符串进行URL编码

    所以就自己写了一个JavaScript脚本 进行URL编码。原理就是先把unicode字符串转换成BASE64编码文本。然后把base64文本传递到js脚本里面的一个函数内。js函数把base64编码还原成unicode的数据 然后直接调用URL编码...

    urlcode解码-HTTP:URL编码解码

    URL编码是将URL中可能引起问题的字符转换为ASCII字符集的等效百分号编码。这包括空格、非ASCII字符以及某些特殊字符,如大括号、引号、尖括号等。例如,空格通常被转换为"%20"。这是因为URL不能包含某些字符,比如...

    URL编码解码器

    URL编码(URL Encoding)是互联网应用中常见的数据处理方式,主要目的是为了确保非ASCII字符或者特殊字符在HTTP请求中能够正确...通过"URL编码解码器"这样的工具,开发者可以更方便地处理这些细节问题,提高工作效率。

    解析URL和文件的编码方式

    例如,Apache Commons Lang库提供了`StringEscapeUtils`类,用于对字符串进行编码和解码,包括URL编码。此外,Java的`java.net.URLDecoder`和`java.net.URLEncoder`类也提供了URL编码和解码的功能。 文件的编码方式...

    url编码

    1. **编程语言内置函数**:在大多数编程语言中,如Java、Python、JavaScript,都有内置的函数来处理URL编码和解码,例如JavaScript的 `encodeURIComponent()` 和 `decodeURIComponent()` 函数。 2. **在线工具**:...

    url编码解码源代码

    在IT行业中,URL编码(又称为百分号编码)是一种用于在网络应用中表示非ASCII字符或特殊字符的标准。这种编码方式是HTTP协议的一部分,确保数据可以在URL中安全传输。本话题将详细探讨“url编码解码源代码”,以及...

    URL解码-编码器URL解码-编码器

    在实际操作中,开发者通常会使用编程语言提供的内置函数进行URL编码和解码,例如JavaScript的`encodeURIComponent()`和`decodeURIComponent()`,Python的`urllib.parse.quote()`和`urllib.parse.unquote()`,Java的`...

    codeURL编码解码工具

    总之,"codeURL编码解码工具"是理解并处理URL编码问题的关键工具,它简化了编码和解码的过程,帮助我们确保URL的有效性和安全性。在日常开发工作中,熟练掌握这类工具的使用方法,将使我们的工作变得更加轻松。

    URL编码解码工具 反向分析URL地址

    8. **安全考量**:URL编码也可以用于防止跨站脚本攻击(XSS),通过编码恶意输入,可以避免这些输入被浏览器错误解析为HTML或JavaScript代码,从而提高应用的安全性。 总结起来,URL编码解码是网络通信的基础,对于...

    url编码表,转换编码

    URL编码的主要目的是确保数据在通过网络传输时能够正确解析,不会因为特殊字符导致问题。在网页表单提交、链接重定向或数据查询字符串中,URL编码是至关重要的。例如,如果你在一个搜索框输入包含空格的关键词,...

    URL 编码文档

    URL编码是一种在网络应用中将特殊字符转换为安全的ASCII字符序列的过程,以确保URL的正确传输和解析。URL,全称Uniform Resource Locator,是统一资源定位符,是互联网上资源的唯一地址。实际上,URL是URI(统一资源...

Global site tag (gtag.js) - Google Analytics