java中URL地址中文乱码问题

news/2024/7/19 15:00:55 标签: java, js, url地址乱码, url传参

1.将字符串转码:newString(“xxxxx”.getBytes(“iso-8859-1”),”utf-8”)
这种转码方式有很大的弊端,因为它是使用指定的字符集将此String编码为 byte 序列,并将结果存储到一个新的byte 数组中,然后通过使用指定的字符编码将生成的byte 数组解码,构造一个新的String字符串。这种情况就有可能遇到的情况是,不能将一个汉字全部解码完。这样,前边的都能正常显示,但是最后一个字可能是乱码。
所以不建议使用这种方式。

2.在传参前转码,接收参数后再转码回来。
这种方式有两种:
第一种:
传参前:使用java.net.URLEncoder.encode(“xxxx”,“utf-8”),将中文转为16进制字符。
接收参数后:使用java.net.URLDncoder.decode(“xxxx”,“utf-8”)将16进制字符转为中文。
这种方式需要注意的是,在使用encode转码后,会出现特殊字符,这时候,就需要将特殊字符替换为相应的16进制。因为特殊字符在url路径中做为参数传递时,也是乱码。

第二种:
传参前:encodeURI(“xxxx”) 。
接收参数后:使用java.net.URLDncoder.decode(“xxxx”,“utf-8”)将16进制字符转为中文。
这种方式需要注意的是,在使用encodeURI转码后,会出现特殊字符,这时候,就需要将特殊字符也转码,所以使用两次encodeURI,即:
encodeURI(encodeURI(“xxxx”))。
这两种转码方式是很好用的,所以很建议大家使用。

具体使用方法:
1.客户端:
url=encodeURI(url);
服务器:
String linename = new String(request.getParameter(“name”).getBytes(“ISO-8859-1”),“UTF-8”);

2.客户端:
url=encodeURI(encodeURI(url)); //用了2次encodeURI
服务器:
String linename = request.getParameter(name);
//java : 字符解码
linename = java.net.URLDecoder.decode(linename , “UTF-8”);


http://www.niftyadmin.cn/n/1480778.html

相关文章

js算法: inserting sort 插入排序

2019独角兽企业重金招聘Python工程师标准>>> var arr [2, 4, 3, 8, 10, 5, 4, 9];for( var j 1, l arr.length; j < l; j) {var key arr[j]; //需要插入到前面已经拍好序的数字var i j - 1;while( i> 0 && arr[i] > key) { //从当前下标开始…

Java定时器(实现每月1号、每日、每15分钟自动执行任务)

需求&#xff1a;在tomcat中&#xff0c;每月一号、每日、每分钟自动执行指定的任务。 开发环境&#xff1a; java tomcat 实现思路&#xff1a;在tomcat中&#xff0c;添加监听器&#xff0c;在监听器中设置定时任务。 1.监听&#xff1a; 新建监听&#xff1a;新建类,im…

centos 防火墙与其一些规则设置

开头&#xff1a;资料来源网上搜索&#xff0c;整理成自己的笔记形式一.IPTABLES服务状态的检查&#xff1a;命令&#xff1a;service iptables status情形1&#xff1a;防火墙服务已安装&#xff0c;但还未运行[rootwoxplife ~]# service iptables status iptables: Firewall …

修改CentOS默认yum源地址提高下载速度

有两种办法&#xff1a; 1.安装yum-fastestmirror可以自动选择最快的镜像下载 2.更改下载镜像地址&#xff0c;选择国内的镜像地址下载 备注&#xff1a;如果安装了 yum-fastestmirror 的话&#xff0c;由于是动态的选择镜像地址&#xff0c;修改后的镜像地址可能会无效。 1.…

Linux下FTP虚拟账号环境部署总结

vsftp的用户有三种类型&#xff1a;匿名用户、系统用户、虚拟用户。1&#xff09;匿名登录&#xff1a;在登录FTP时使用默认的用户名&#xff0c;一般是ftp或anonymous。2&#xff09;本地用户登录&#xff1a;使用系统用户登录&#xff0c;在/etc/passwd中。3&#xff09;虚拟…

Javascript - 执行上下文

概念 一、执行上下文: (Execution Context,缩写 EC) console.log(EC0);function funcEC1(){console.log(EC1);function funcEC2(){console.log(EC2);var funcEC3 function(){console.log(EC3);};}funcEC2();}funcEC1(); 在Javascript引擎解析上述代码时在执行函数会依次将其添…

servlet接收客户端传过来的图片

public class Uploadfile1 extends HttpServlet { Override public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); //获得磁盘文件条目工厂。 Disk…

Android Fragment使用(四) Toolbar使用及Fragment中的Toolbar处理

Toolbar作为ActionBar使用介绍 本文介绍了在Android中将Toolbar作为ActionBar使用的方法. 并且介绍了在Fragment和嵌套Fragment中使用Toolbar作为ActionBar使用时需要注意的事项. 使用support library的Toolbar Android的ActionBar每个版本都会做一些改变, 所以原生的ActionBar…