URL编码-只编码中文字符(添加保留字符)

587 阅读1分钟

项目中一个分享链接中包含了中文字符,导致分享到微信后链接被截断不能完整识别,如下图:

1646988695(1).png

自然想到需要对URL进行编码,但是使用URLEncoder.encode方法编码后,发现符号也被编码了,比如https://被替换为https%3A%2F%2F,链接直接就识别不了了,如下图:

image.png

那么,怎样才能只把中文字符编码一下呢?

⭐解决方案如下:

使用Uri.encode对字符串进行编码,可以定义保留字符

String allowUriChars = "@#&=*+-_.,:!?()/~'%"; 
String result = Uri.encode(urlStr, allowUriChars);

结果:

image.png

只编码了中文字符,链接可以被微信正常识别。