在做项目时遇到一个问题,是对于含中文字符的参数进行get提交,如果不对这些参数进行处理的话,直接提交会有问题的,因为中文为非ASCII码,而get提交的话需要全部为ASCII码基本表中的字符,ASCII码基本表中一共就那128个(这些只是常用的,在键盘上看得见的字符,像字母,一些符号什么的,全部的一共有256个,当然其他的一般用不到)。所以想要传输中文(当然也包括日文)这种非ASCII码的,需要对其进行转换一下,转换为浏览器地址认识的ASCII码,所以在java中可以使用java.net包下的URLEncoder类,有个encode()方法进行编码(js中也可以),其中有两个参数,第一个为需要编码的带中文的(或者其他非ASCII码)参数,第二个参数需要指定编码的格式,一般都用utf-8,不同编码的格式编码之后的字符不一样,所以这里需要指定一下,解码的时候需要指定同样的格式解码,于是对于url后面的参数进行encode之后提交到后台,在java后台接收之后依然是乱码,使用request.setCharacterEncoding("utf-8"),同样没作用,后经查阅资料才知道,request的setCharacterEncoding方法只对post提交的方式起作用,而且要在所有的getParameter之前才可以,而对于get提交的方式进行解码的方法,在tomcat根目录下,有个conf文件夹,里面有server.xml中有个配置的地方,如
中文乱码 URLEncode之后,后台获取仍是乱码问题详解
最新推荐文章于 2024-05-03 06:51:32 发布