我在使用spring开发一个web应用程序时,遇到url使用中文作为参数值传递时发生乱码的问题。具体项目情况是通过android客户端调用web服务器提供的搜索功能,因此在调用的url中需要将客户端输入的关键字作为搜索的参数值,自然会涉及到参数值为中文的情况。经过网上查阅相关资料和大牛的分析,结合我自己的实际情况,现把解决办法贴上。
1、客户端使用java.net.URLEncoder.encode(Url, "UTF-8"),这里的url就是调用服务器端的url,将其进行utf-8编码。
2、服务器端获取到参数后,使用java.net.URLDecoder.decode(searchStr, "UTF-8"),将传递过来的参数进行utf-8解码。
3、完成以上两步不一定就能成功,这还与web服务器有关。我使用的是tomcat,因此需要确定tomcat的目录下的/conf/server.xml配置文件是否添加了如下代码:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"URIEncoding="UTF-8"/>,红色部分表示需要添加的,默认tomcat的配置文件是没有该代码的。
最后,简单介绍一下我在用浏览器测试url时发现的问题,当使用360浏览器测试时,url中的搜索关键字输入的是中文,回车之后,无返回结果,换作其他浏览器,比如firefox或者是chrome,即使url的参数值是中文,也能返回正确的结果,而且仔细观察看你会发现,当将chrome浏览器中带有中文参数值的url复制并粘贴到新标签时,中文参数值自动被转码了,如:searchStr=%E7%88%B1。将chrome中转码之后的url再粘贴到IE或者是360浏览器中进行访问,则会返回正确的值,由此说明,chrome、firefox一类浏览器会对中文值自动进行转码,而基于IE内核的浏览器则需要自己转码。以上仅是我测试之后得出的结论,如有不对,欢迎指正,非常感谢
分享到:
相关推荐
Java 页面URL传值中文乱码问题通常出现在前端Ajax请求中,当URL参数包含中文字符时,服务器端通过`request.getParameter()`获取参数时,可能会出现乱码现象。这是因为HTTP协议默认使用ISO-8859-1编码,而中文字符...
"URL地址传参中文乱码处理" URL地址传参中文乱码处理是指在Web应用程序中,将中文参数传递给服务器时,可能出现乱码的情况。这种情况可能是由于编码问题或Tomcat服务器的配置问题引起的。 在处理URL地址传参中文...
总结来说,解决Java页面URL地址传输参数乱码问题的关键在于确保URL编码和解码过程中的字符集一致。通过调整Tomcat服务器配置或者在Java代码中进行手动处理,可以有效地避免中文参数在URL传输过程中出现乱码。当然,...
- 前端 JavaScript 代码中,`window.location.href` 用于获取当前页面的 URL,然后通过 `substring()` 和 `indexOf()` 方法截取 `.nsf` 后的路径部分,添加 `/x_print.xsp?OpenXPage` 和经过编码的参数,最后通过 `...
中文字符在URL中如果不经过编码,可能会导致乱码问题,因为URL标准只允许ASCII字符集的一部分。`encodeURI()` 和 `encodeURIComponent()` 是JavaScript提供的两个用于URL编码的函数,但它们在处理中文字符时有所不同...
总结,解决Java Web中的URL中文乱码问题,关键在于发送请求时使用`URLEncoder.encode()`进行编码,以及在接收请求时设置正确的字符编码,如在JSP页面和Struts2 Action中。同时,可以通过配置过滤器确保整个应用程序...
总之,Struts 2 中处理中文汉字传值的关键在于理解和正确使用字符编码,包括设置页面编码、响应编码、URL编码和Action中的解码步骤。确保每个环节都与UTF-8编码兼容,可以避免中文字符的乱码问题。在实际开发中,还...
首先,让我们来了解JSP页面传值乱码过滤方法。在JSP中,用户提交的数据可能因为客户端和服务器端使用的编码不一致而导致乱码。为了避免这种情况,开发者通常会在服务器端进行编码过滤处理。最常见的做法是在请求到达...
在讨论JSP(Java Server Pages)传值时,遇到的本地无乱码而测试机出现乱码的问题是一个典型的编码问题,常见于网络编程和Web开发中。以下是对标题、描述和部分内容所涉知识点的详细解析。 ### 知识点解析 #### ...
在开发Web应用时,尤其是使用Java的JSP技术,开发者经常会遇到中文乱码的问题。这是因为字符编码不一致导致的,特别是在处理用户输入或从数据库获取数据时。本篇将详细介绍如何解决JSP传值过程中出现的中文乱码问题...
如果数据包含中文或其他非ASCII字符,使用`encodeURIComponent()`函数进行URL编码,避免在传输过程中出现乱码。 ```javascript let data = { username: "张三", message: "你好,世界!" }; let encodedData = ...
在Java Web应用中,服务器接收到请求时,如果没有正确处理字符编码,就会导致中文乱码。 为了解决这个问题,开发者通常会在前端对中文参数进行编码,如使用encodeURIComponent函数,然后在后台解码,通常是用UTF-8...
在使用jQuery的ajax()函数进行数据传输时,中文乱码问题常常困扰着开发者。这个问题主要出现在数据发送到服务器时,由于编码格式不一致导致的字符乱码。以下是一些解决此问题的方法: 方法一:使用`encodeURI()`...
总结来说,通过在前端进行正确的编码处理,并在后端通过正确的解码方法还原数据,我们能够有效地解决js传值后台中文乱码的问题。同时,熟练掌握JavaScript的各项操作技巧,对于提升Web开发的效率和质量也有着显著的...
在开发Java Web应用程序时,尤其是使用JSP技术时,经常遇到的一个问题是中文字符在传递过程中出现乱码。这个问题主要涉及到字符编码的设定和统一。本文将详细介绍如何解决JSP中的中文乱码问题,并通过示例代码进行...
总的来说,解决Ajax传值到Servlet的乱码问题需要确保每个环节的编码设置一致,从JSP页面到Ajax请求,再到Servlet的接收和响应。只有这样,才能保证数据在整个传输过程中不发生乱码。记得在排查问题时,逐步检查每个...