如何解决java中的url乱码问题

发布时间:2020-06-21 12:49:08 作者:元一
来源:亿速云 阅读:580

我们主要通过两种形式提交向服务器发送请求:URL、表单。而表单形式一般都不会出现乱码问题,乱码问题主要是在URL上面。

把URI字符串采用UTF-8编码格式转化成escape格式的字符串。相对于encodeURI,encodeURIComponent会更加强大,它会对那些在encodeURI()中不被编码的符号(; / ? : @ & = + $ , #)统统会被编码。但是encodeURIComponent只会对URL的组成部分进行个别编码,而不用于对整个URL进行编码。对应解码函数方法decodeURIComponent。

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”);

以上就是java中url乱码解决方法的详细内容,更多请关注亿速云其它相关文章!

推荐阅读:
  1. 如何解决java中request的乱码问题
  2. 怎么解决java邮件乱码问题

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java url乱码 ava

上一篇:HADOOP/HBASE/SPARK修改PID文件位置

下一篇:第二章 jQuery中的选择器

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》