android开发日常总结安卓rom源码分析

Android编码问题之URLEncoder.encode(st

2018-05-31  本文已影响806人  aitality

开发android应用五六年了,总觉得字符串编码是一个坑,就Android本身提供了两种编解码的方式:

URLEncoder.encode(String s, String charset) / URLDecoder.decode(String s);
vs
Uri.encode(String s) / Uri.decode(String s);

今天我们就从以下几点了解以下这两种编码的区别:

URLEncode符合RFC 2396标准,主要是对网页内容和网站链接进行转码。Uri.encode同样遵循RFC 2396标准,一个标准的URI应该是这样子的:<scheme>://<authority><path>?<query>

URLEncode不编码字符:"-.*","a-z","A-Z","0-9"," " 空格会被编码成“+”
Uri.encode不编码字符:"
-!.~'()*","0-9","a-z","A-Z"

URLEncode.encode不允许扩展,Uri.encode(String s, String allow)允许扩展字符集

Uri.encode多用在组件之间传递数据时使用,URLEncode.encode多用在对api进行编码时使用

总结

android提供的这两种编码方式都有各自的用途,不能单纯的只使用其中一种,否则会带来很多你意想不到的问题,还有就是URLEncode不能随意自己重写,否则会和很多第三方库默认编码不符合,那坑就更多了。

上一篇下一篇

猜你喜欢

热点阅读