avascript中存在几种对URL字符串进行编码的方法:escape(),encodeURI(),以及encodeURIComponent()。这几种编码所起的作用各不相同。
escape() 方法:
采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。
不会被此方法编码的字符:@ * / +
encodeURI() 方法:
把URI字符串采用UTF-8编码格式转化成escape格式的字符串。
不会被此方法编码的字符:! @ # $& * ( ) = : / ; ? + '
encodeURIComponent() 方法:
把URI字符串采用UTF-8编码格式转化成escape格式的字符串。与encodeURI()相比,这个方法将对更多的字符进行编码,比如 / 等字符。所以如果字符串里面包含了URI的几个部分的话,不能用这个方法来进行编码,否则 / 字符被编码之后URL将显示错误。
不会被此方法编码的字符:! * ( ) '
因此,对于中文字符串来说,如果不希望把字符串编码格式转化成UTF-8格式的(比如原页面和目标页面的charset是一致的时候),只需要使用escape。如果你的页面是GB2312或者其他的编码,而接受参数的页面是UTF-8编码的,就要采用encodeURI或者encodeURIComponent。
另外,encodeURI/encodeURIComponent是在javascript1.5之后引进的,escape则在javascript1.0版本就有。
js代码
java 代码
备注:
用JS不编码,弹出50个字节,编码一次变成58个字节,服务端接收时不需要解码---即可直接获得正常显示的URL。
编码二次:变成66个字节,服务端接收时需要解码,才能看到明文。
有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了。编码的格式为:%加字符的ASCII码,即一个百分号%,后面跟对应字符的ASCII(16进制)码值。例如空格的编码值是"%20"。
-
如果不使用转义字符,这些编码就会当URL中定义的特殊字符处理。
-
-
-
下表中列出了一些URL特殊符号及编码十六进制值
-
1.+URL中+号表示空格%2B
-
-
2.空格URL中的空格可以用+号或者编码%20
-
-
3./分隔目录和子目录%2F
-
-
4.?分隔实际的URL和参数%3F
-
-
5.%指定特殊字符%25
-
-
6.#表示书签%23
-
-
7.&URL中指定的参数间的分隔符%26
- 8.=URL中指定参数的值%3D
js在发送url请求带中文时会有乱码问题:
例如 var url="....do?method=init&name='中文'";
处理的方法是 对中文进行二次转码 encodeURI(encodeURI('中文')) 而我们通常只做一次转码发现还是不对。只能叹没有办法。
在接收方进行一次解码:
java.net.URLDecoder static String decode(String s, String enc)
s 为接收的字符串 enc 为要转的编码 utf-8 等
分享到:
相关推荐
如果不想在url中看到有明文,比如http://localhost:8080/template_1/login.action?user=张三 可以使用js的encodeURI的URLDecoder.decode一起使用一起来把url加密下 (1)JS在页面上把数据var val = encodeURI...
JavaScript中的`encode`和`decode`是一组用于字符串编码解码的方法,它们在处理和传输数据时起到关键作用。在JavaScript中,常见的编码方法有`encodeURIComponent`、`decodeURIComponent`、`encodeURI`、`decodeURI`...
本项目聚焦于“RS_encode_decode”,这是一个基于FPGA(Field-Programmable Gate Array,现场可编程门阵列)的编解码模块,特别应用了喷泉码中的Raptor码,其预编码部分采用了RS码(Reed-Solomon码)。让我们深入...
本项目"js-protobuf-encode-decode-master.zip"提供了一个在线工具,专门用于处理JavaScript环境下的Protobuf编码和解码操作。 Protobuf是一种由Google开发的数据序列化协议,它定义了一种二进制数据格式,比JSON...
EnCode/DeCode转换工具是一款专门针对这一需求设计的小巧实用软件,它能够处理ANSI和UTF-8这两种常见的字符编码格式,帮助开发者解决字符转换的问题。 首先,我们要理解编码与解码的基本概念。编码是将可读的文本...
标题“sbc_encode_decode.7z”提示我们这是一个与SBC编码和解码相关的压缩文件,主要用于蓝牙A2DP协议。在IT领域,尤其是无线音频传输中,SBC(Subband Coding)是一种广泛使用的编解码标准。让我们深入探讨一下这个...
Video Encode and Decode GPU Support Matrix.xlsx
HDB3 ENCODE AND DECODE,详细设计与实现,参考一下下啊
alfred-encode-decode-workflow, 将sting编码和解码为多个变体 编码/解码( 下载 v1.8 )将字符串编码和解码为多个变体。要求Alfred应用程序 v2 。安装点击下面的下载按钮双击以导入 Alfred 2查看工作流以添加自定义...
编码转换器,如“Encode_Decode_Tools”,是解决不同字符集之间转换问题的重要工具,它使得各种格式的信息能够在全球范围内无障碍地传播。本文将深入探讨编码转换器的工作原理、常见编码类型以及其在实际应用中的...
DVI 1.0 encode and decode source code, write with verilog, with simulation project, synplify project and all soure code. They're have been running on xilinx spartan3A FPGA. Can be used in real project...
base64_encode_decode
前向纠错编码(FEC)技术通过在传输码列中加入冗余纠错码,在一定条件下,通过解码可以自动纠正传输误码,降低接收信号的误码率(BER)。 本算法每8bit增加4bit监督位,就纠错1bit
用js实现的base64encode,base64decode函数. 包括: function base64encode(str) { function base64decode(str) { function utf16to8(str) { function utf8to16(str) { function doit() {
this program is a demo to encode, decode for PDF417 bar code.
`Encode_ Decode Tools`是一款用于URL编码和解码的工具,它可以帮助开发者和用户方便地处理这些编码问题。这款工具可能提供了简单的用户界面,允许用户输入URL或字符串,然后点击按钮进行编码或解码操作。它支持对...
本项目提供的"RSA_encodedecode.zip"是一个C语言实现的RSA加密解密工具,包含测试代码和Makefile,方便用户直接编译运行。 在RSA算法中,主要涉及到两个关键概念:公钥和私钥。公钥是公开的,任何人都可以获取,...
Python 字符串的 encode 与 decode 研究 Python 中的字符串编码问题是非常常见的,很多开发者在处理字符串时会遇到乱码问题。这个问题的根源是 Python 字符串的内部表示是 Unicode 编码,而在编码转换时需要以 ...
"EncodeDecode & ANSI-UTF8编码转换工具"是一款专门用于解决这个问题的软件,它能够帮助用户将文本数据从ANSI编码转换为UTF-8编码,反之亦然。这两种编码方式在不同的上下文中有各自的适用性,理解它们的差异和用途...
标题"delphi2010 base64_encode&decode"指的是使用Delphi 2010编程环境实现的Base64编码和解码功能。Delphi是一款强大的面向对象的集成开发环境(IDE),主要用于编写Windows应用程序,其语法基于Pascal语言。 描述...