`

Js编码和Java后台解码

 
阅读更多
Js中,使用get提交,url传递参数的时候,会带来中文乱码的问题,对此可以使用js的函数encodeURI(href);来解决。

   一、Js编码的几种方式区别:
1、window.escape()与HttpUtility.UrlEncodeUnicode()编码格式一样:将一个汉字编码为%uxxxx格式
不会被window.escape编码的字符有:@ _ - . * / +  这与http://www.w3school.com.cn/js/jsref_escape.asp上的解释不符合

2、window.encodeURIComponent()与HttpUtility.UrlEncode()编码格式一样:将一个汉字编码为%xx%xx%xx的格式
不会被window.encodeURIComponent编码的字符有:'  (  )  *  -  . _   ! ~   这与http://www.w3school.com.cn/js/jsref_encodeURIComponent.asp解释相符合
不会被HttpUtility.UrlEncode编码的字符有:'  (  )  *  -  .  _  ! 相比较而言,HttpUtility.UrlEncode比window.encodeURIComponent多一个 ~ 编码

3、window.encodeURI编码(常用这种方法), 不会被window.encodeURI编码的字符有: -  _  .  !  * (  )  ;  /  ?  :  @  &  =  $  ,  #,与encodeURIComponent对比,发现encodeURI不对:;/?:@&=+$,#这些用于分隔 URI 组件的标点符号进行编码

例:
function zhuanma(){  
    var name = document.getElementById("name").value;  
    var pass = document.getElementById("pass").value;  
    name = window.encodeURI(name);  
    var url = "<%=request.getContextPath()%>/user/userlogin.action?name="+name+"&pass="+pass+";  
    window.open(url,'','width=800,height=250,top=80,left=70,location=no,status=no,scrollbars=yes,resizable=yes');  
    }  
 } 

  
   二、后台java解码:
 String name = java.net.URLDecoder.decode(name,"UTF-8");


这样就解决了get传参中文乱码的问题。

疑问:
同学的毕业设计出现JavaScript用encodeURIComponentt编码后无法再后台解码的问题。
原来他是这样写的:
window.self.location="searchbytext.action?searchtext="+encodeURIComponent(seartext);
java处理的代码为:
searchtext=java.net.URLDecoder.decode(searchtext,"UTF-8");/*需要处理异常*/
咋一看觉的没问题啊,一编一解的,应该可以了。但还是出现了乱码。
后来网搜资料,发现原来在对后台java程序里的searchtext赋值的时候,本身已经使用了一次解码,不过解码的结果依然不对。所以我们可以在页面上进行两次编码操作,这样后台自动的那次就可以抵消掉一次,然后在使用searchtext=java.net.URLDecoder.decode(searchtext,"UTF-8");/*需要处理异常*/进行一次解码就好了。

正确的代码:
window.self.location="searchbytext.action?searchtext="+encodeURIComponent(encodeURIComponent(seartext));

searchtext=java.net.URLDecoder.decode(searchtext,"UTF-8");/*需要处理异常*/


另外还有一种方法是JavaScript进行一次编码,后台java处理时换种想法就好了:
String s = new String(request.getParameter("name").getBytes("ISO8859-1"), "UTF-8");
分享到:
评论

相关推荐

    encodeURIComponent编码后java后台的解码

    同学的毕业设计出现JavaScript用encodeURIComponentt编码后无法再后台解码的问题。 原来他是这样写的: window.self.location="searchbytext.action?searchtext="+encodeURIComponent(seartext);

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

    在Java后台处理中,也可以使用decodeURI、decodeURIComponent函数来解码URI中的编码字符串。 JavaScript和JavaWeb对汉字编码的策略非常重要,正确的编码和解码处理对于确保数据的正确传输和显示至关重要。

    AES实现前端JS和后端java加密解密

    4. **解密方法**:对应的`decrypt()`方法,接收加密后的数据(通常以Base64编码),解码后用相同的密钥和IV进行解密。 5. **安全实践**:确保在Java后端存储和管理密钥时遵循最佳实践,例如使用KeyStore或HSM(硬件...

    图片上传到java后台

    综上所述,图片上传到Java后台涉及前端图片转Base64编码、HTTP请求传输、Java后台Base64解码、文件系统操作等多个环节,每个环节都需要细致的处理和优化,以确保功能的稳定性和效率。在开发过程中,应注重代码的可...

    前台JS和后台Java对应的RSA加解密

    在这个场景中,"前台JS和后台Java对应的RSA加解密"是一个典型的跨平台安全通信的应用。下面将详细介绍RSA加解密的工作原理以及如何在前端JavaScript和后端Java之间实现。 **RSA加密解密原理** RSA(Rivest-Shamir-...

    DES加密前端js和后台java互通代码

    在Java中,可以使用`java.util.Base64`类来编码和解码Base64字符串: ```java import java.util.Base64; // 在加密或解密后添加Base64编码 String encryptedBase64 = Base64.getEncoder().encodeToString...

    java实现电脑端扫描二维码

    在Java中实现电脑端扫描二维码的过程涉及到多个步骤,包括前端的图像捕获、后端的图像处理和解码。以下是对这些步骤的详细说明: 1. **前端图像捕获**: - 前端使用JavaScript来调用电脑摄像头进行拍照。这通常...

    html5+jquery+java后台 压缩上传图片

    5. **Java后端处理**:在Java服务器端,接收到前端发送的数据后,可以使用Base64解码将base64字符串还原为字节数组。然后,将这些字节写入到文件系统或者数据库中。为了安全和性能考虑,后端通常会检查文件类型、...

    java后台调试URL

    - 示例中如`{id:3,structure:%27%E7%A0%96%E6%B7%B7%27,address:%27%E6%A0%8F%E6%9D%86%E6%9D%91%27}`这样的内容是JSON(JavaScript Object Notation)格式,它是网络传输数据的常用格式,易于阅读和编写,同时也被...

    前端图片压缩base64后台还原图片

    将前端压缩并编码的base64图片发送到服务器后,后台需要进行解码和保存操作。以下是一个简单的Java后台工具类示例: ```java public class Base64Util { public static byte[] base64ToBytes(String base64Str) { ...

    html5实现摄像头拍照并使用java进行照片保存

    在Servlet中,我们需要解析这个URL,提取出Base64编码的图像数据,并将其解码为字节数组。然后,可以使用Java的`javax.imageio.ImageIO`类将字节数组保存为本地文件或上传至云存储服务。以下是一个简化的Servlet处理...

    java 实现整张网页快照

    5. **处理图像数据**:在Java端接收到Base64编码的图像数据后,将其解码并保存为本地图片文件。 6. **优化和调整**:可能还需要处理一些细节问题,如网页滚动、CSS样式影响、异步加载资源等,以确保快照的完整性和...

    WebRTC+java实现多人视频通讯

    在“WebRTC+Java实现多人视频通讯”的项目中,WebRTC主要负责前端的音视频采集、编码、传输和解码工作。用户可以在浏览器中直接参与视频通话,得益于WebRTC的API,开发者可以轻松获取用户的摄像头和麦克风权限,并...

    java前后台(含数据库)乱码大综合

    总的来说,解决Java前后台及数据库乱码问题的关键在于理解字符编码的流程,并在每个环节保证数据的正确编码和解码。无论是文件名、参数、响应内容还是数据库存储,都需要匹配相应的字符集,以避免乱码的出现。同时,...

    实现使用3des在页面js加密,后台java解密

    总的来说,这个示例展示了如何在浏览器端用JavaScript实现3DES加密,然后在服务器端用Java进行解密,这对于需要在客户端和服务器之间安全传输敏感信息的应用场景非常有用。在实践中,需要结合具体项目需求,选择合适...

    html5调用摄像头拍照ajax java上传

    在本项目中,我们将探讨如何利用HTML5中的`&lt;canvas&gt;`和`&lt;video&gt;`标签调用用户摄像头进行拍照,并通过AJAX(异步JavaScript和XML)技术配合Java后端实现图片的上传。 1. HTML5 `&lt;video&gt;`标签: `&lt;video&gt;`标签是...

    AJAX编码问题

    **乱码问题**:在使用AJAX进行POST请求时,如果客户端和服务器端的字符编码设置不一致,就容易出现乱码问题。例如,当浏览器发送的数据是UTF-8编码,而服务器端默认使用ISO-8859-1编码解析时,就会导致数据解析错误...

    js传值后台中文出现乱码的解决方法

    总结来说,通过在前端进行正确的编码处理,并在后端通过正确的解码方法还原数据,我们能够有效地解决js传值后台中文乱码的问题。同时,熟练掌握JavaScript的各项操作技巧,对于提升Web开发的效率和质量也有着显著的...

Global site tag (gtag.js) - Google Analytics