对网址中的斜线/进行urlencode的定义在哪

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对网址中的斜线/进行urlencode的定义在哪相关的知识,希望对你有一定的参考价值。

参考技术A urlencode的本意就是把字符串用url编码进行编码,肯定会转换的,而且本来斜杠在url里也是有含义的嘛! 参考技术B urlencode('/');

???

java对URL中的中文和符号进行UrlEncode转码

需求

我们有一个需求,是和钉钉审批打通的,然后有需要放附件的地方,没有用钉钉云盘附件的那种形式,而是直接用了单行文本框,放一个链接的形式。
然后我们文件上传用的是ali的oss,上传完成以后会得到一个类似 ossHost/文件夹名/文件名的链接,此时就会有一个问题产生,如果我的链接中带中文,当我把这个链接放到钉钉的文本框中提交以后,从中文部分开始,不会被识别为链接的一部分,这可就阿西吧了。

当时发现这个问题的时候,我基本是懵的,脑袋里完全没有解决方案,然后组长说,你试试urlencode一下再放到文本框里。

于是就得到了解决方案,下面放下代码

代码

    public static void main(String[] args) throws UnsupportedEncodingException 
        String url="https://test.oss-cn-beijing.aliyuncs.com/product/4567455【合规】某个使用条例.pdf";
        Matcher matcher =Pattern.compile("[\\\\u4e00-\\\\u9fa5]|[\\\\u3002\\\\uff1b\\\\uff0c\\\\uff1a\\\\u201c\\\\u201d\\\\uff08\\\\uff09\\\\u3001\\\\uff1f\\\\u300a\\\\u300b\\\\u3010\\\\u3011]").matcher(url);
        while (matcher.find()) 
            String tmp = matcher.group();
            try 
                url = url.replaceAll(tmp, java.net.URLEncoder.encode(tmp, "utf-8"));
             catch (UnsupportedEncodingException e) 
                e.printStackTrace();
            
        

        System.out.println(url);
    

解释

[\\\\u4e00-\\\\u9fa5] 代表匹配所有中文。
[\\\\u3002\\\\uff1b\\\\uff0c\\\\uff1a\\\\u201c\\\\u201d\\\\uff08\\\\uff09\\\\u3001\\\\uff1f\\\\u300a\\\\u300b\\\\u3010\\\\u3011] 这块是我需要匹配的符号这些,如果有需要定制的,可以自己加上。
比如用unicode 转换一下就知道自己该匹配谁了。

以上是关于对网址中的斜线/进行urlencode的定义在哪的主要内容,如果未能解决你的问题,请参考以下文章

Java对URL中的中文进行UrlEncode

PHP--------解决网址URL编码问题

php 编程问题:只对链接中的 中文 进行urlencode转换,怎样处理

关于application/x-www-form-urlencoded等字符编码的解释说明

java对URL中的中文和符号进行UrlEncode转码

Harfbuzz 在字体文件中选择本地斜线字符