get方式中文参数乱码解决方法

encodeURI(encodeURI("员工数据模板.xls"));

前台发送请求的时候,给中文汉字参数,进行两次编码;后台编码一次String fileName = URLDecoder.decode(fileName, "UTF-8");

下面是拷贝其他文章的内容:

首先出现中文乱码的原因是tomcat默认的编码方式是"ISO-8859-1",这种编码方式以单个字节作为一个字符,而汉字是以两个字节表示一个字符的。

一,get请求参数中文乱码的解决办法

对于get请求解决中文乱码有两种途径一种是修改tomcat默认的编码方式为"UTF-8"

在tomcat的server.xml里把

<Connector connectionTimeout="50000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

修改为

<Connector connectionTimeout="50000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>

  使用这种方式带来的问题是在你本机上这么做没有问题,你无论怎么去修改你tomcat上的配置都没问题,

但是测试环境和生产环境的服务器不是轻易说改就能改的,特别是有些公司的服务器是租赁的,那么在我们

不知道测试环境和生产环境服务器配置的时候就要使用以下的方法来解决get请求的中文乱码问题。

来自页面的一个get请求:

window.location.href = getContextPath()+"/manage/user/detail?name="+encodeURI(encodeURI("小明"));

服务器端:

String name = request.getParameter("name");
orgname = URLDecoder.decode(name,"UTF-8");

  因为get请求的参数在请求行上,我们不能像解决post请求那样使用 request.setCharacterEncoding("UTF-8");这种方式是修改方法体的编码方式。

所以只能使用以上的方式分别对请求行的汉字进行编码和解码。其实解决get请求中文乱码问题最好的方式是避免使用中文,比如上面的name="小明",

如果name是一个恒定值的话,你可以在你的程序里这样写:

window.location.href = getContextPath()+"/manage/user/detail?name="+encodeURI(encodeURI("xiaoming"));

public static final String NAME = "xiaoming";//定义一个常量

String name = request.getParameter("name");

if(name.equals(NAME)){

  name = "小明"

}

  如果你必须传中文,而且name这个参数的值是动态的,不断变化的,建议你在数据库里面建立一张表,

让你的中文参数的值都有一个对应的id,在请求发送钱先查一下这张表。

二,post请求参数中文乱码的解决办法

  对于post请求,请求中问乱码的两种解决办法,就喜闻乐见了。一般也不会有post请求参数中文乱码吧,认为任何一个java的web项目因该都配置了字符集过滤器吧。

但为了这文章的完整性和以后工作学习方便,我还是把这两种方法贴上来吧。

  (1): request.setCharacterEncoding("UTF-8");

  (2):

     <filter>
        <description>字符集过滤器</description>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
          <description>字符集编码</description>
          <param-name>encoding</param-name>
          <param-value>UTF-8</param-value>
        </init-param>
     </filter>
     <filter-mapping>
      <filter-name>encodingFilter</filter-name>
      <url-pattern>/*</url-pattern>
     </filter-mapping>

    

  

参考文章:https://www.cnblogs.com/cdf-opensource-007/p/6337448.html

原文地址:https://www.cnblogs.com/zh-1721342390/p/9266999.html

时间: 2024-08-25 06:13:15

get方式中文参数乱码解决方法的相关文章

javascript通过url向jsp页面传递中文参数乱码解决方法

解决方法:在传递参数前将中文参数进行两次编码,jsp页面获取参数后对中文参数进行一次解码,中文参数就不会变为乱码了! 参考例子: <%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@ page import="java.net.*" %><%String str0=&

http中 get方法 传送中文参数乱码解决办法

http传送参数有两种方法:get 和post  当时使用get方法传递中文参数是会有乱码现象 解决办法: 1.在jsp压面url后面的参数使用 encodeURI:"&zxbghy="+ encodeURI(zxbghy) 2.在后台java获取参数时使用字节数组:temphgdmhy = new String(hgdmhy.getBytes("ISO-8859-1"), "UTF-8");  案例,用get方法传递两个中文参数:zxb

c#写入Mysql中文显示乱码 解决方法 z

mysql字符集utf8,c#写入中文后,全部显示成?,一个汉字对应一个? 解决方法:在数据库连接字符串中增加字符集的说明,Charset=utf8,如 MySQLConnection con = new MySQLConnection("server=127.0.0.1;uid=root;pwd=;database=test;Charset=utf8"); 搞定 c#写入Mysql中文显示乱码 解决方法 z,布布扣,bubuko.com

get、post请求参数乱码解决方法(qq:2798641729)

在实际的项目中我们会遇见中文乱码的问题,这个问题是很恶心的事,所以我在这里提供了一些解决中文乱码的方法,希望能给大家一些帮助. 一.单独参数乱码 post请求:request.setCharacterEncoding("utf-8"); 当客户端通过GET请求发送数据给服务器时,使用request.getParameter()获取的数据是被服务器误认为ISO-8859-1编码的,也就是说客户端发送过来的数据无论是UTF-8还是GBK,服务器都认为是ISO-8859-1,这就说明我们需要

c#写入Mysql中文显示乱码 解决方法

如题,mysql字符集utf8,c#写入中文后,全部显示成?,一个汉字对应一个?解决方法:在数据库连接字符串中增加字符集的说明,Charset=utf8,如 MySQLConnection con = new MySQLConnection("server=127.0.0.1;uid=root;pwd=;database=test;Charset=utf8"); 搞定,哈哈哈

putty中文显示乱码解决方法

putty工具是开源免费的远程ssh工具,界面整洁,小巧好用,配合同样小巧整洁且免费的WinSCP的ftp功能,绝对是linux后端开发的利器 说下解决putty中文显示乱码的问题 1.更改linux系统的语言环境 vim ~/.bash_profile 在最后添加一行   LANG="zh_CN.UTF-8" :wq 退出保存 最后运行 source ~/.bash_profile 2.修改putty显示 首先ssh连接到你修改过~/.bash_profile 的服务器,登陆后,右键

两个页面跳转传中文参数,中文出现乱码解决方法

// encodeURI 编码 window.location.href(encodeURI("zhongji2.html"+"?"+"parm1="+parm1+"&parm2="+parm2+"&parm3="+parm3+"&parm4="+parm4)); // decodeURI 解码 var url=decodeURI(location.href);

jquery之getJSON方法获取中文数据乱码解决方法

最近公司做的东西要用到js,感觉js太繁琐,所以自己学起了jquery,发现jquery确实强大.在学到jquery ajax的时候(用的工具是eclipse),发现$.getJSON()方法请求服务器的json数据(有中文),返回到浏览器页面是乱码,怎么办呢? 原因是浏览器编码和服务器里的json数据编码不一致, 1.对着项目右键,properties,将text file encoding,改为utf-8.这时访问页面,发现还是乱码.我们还需要一步. 2.对着json文件,右键,proper

load data infile 导入数据 中文显示乱码 解决方法

各种字符参数统一为utf8 SET character_set_client = utf8 ; SET character_set_connection = utf8 ; SET character_set_database = utf8 ; SET character_set_results = utf8 ; SET character_set_server = utf8 ; SET collation_connection = utf8 ; SET collation_database =