精华内容
下载资源
问答
  • 2022-05-30 10:27:24

    URLEncoder.encode在对字符串进行转码时,会将空格转为”+“号,URLDecoder.decode方法再解码时会将加号"+"和"%20"都解码为空格。

    表面上看起来没有什么问题,但是遇到上传文件时候,对于带有空格的文件,将文件名称URLEncoder.encode之后,拼接成完整的文件地址进行访问时,会提示文件不存在。

    最好的处理方式是URLEncoder.encode在编码之后,调用replaceAll("\\+", "%20"),将所有的加号替换成%20。

    String filename = "你好 nihao.pdf";
    String encodefilename = java.net.URLEncoder.encode(filename).replaceAll("\\+", "%20");

    这样转码之后就不会有问题了。

    另附上判断网络文件是否存在的两个方法:

    1.使用getInputStream()

    boolean isExist = false;
    try{
    	URL url = new URL(urlStr);// 注:urlStr中需将空格替换为%20,否则报505
    	URLConnection conn = url.openConnection();
    	conn.getInputStream();
    	isExist  = true;
    }catch(Exception e){
    	// 获取失败
    	isExist = false;
    }

    2.使用getResponseCode()

    boolean isExist = false;
    try{
    	URL url = new URL(urlStr);// 注:urlStr中需将空格替换为%20,否则报505
    	HttpURLConnection conn = (HttpURLConnection)url.openConnection();
    	int state = conn.getResponseCode();
        if(state == 200){
    	    isExist  = true;
        }else{
    	    isExist  = false
        }
    }catch(Exception e){
    	isExist = false;
    }

    更多相关内容
  • 主要给大家介绍了关于java中URLEncoder.encode与URLDecoder.decode处理url特殊参数的方法,文中介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
  • 使用URLEncoder.encode转码是,总是会提示要抛出异常,我抛出之后,但是正常又访问不了了
  • java的web开发中URLEncoder.encode方法

    千次阅读 2021-03-05 20:15:49
    一: 我们先看2个编码的情况String name=java.net.URLEncoder.encode("测试", "UTF-8");System.out.println(name);name=java.net.URLEncoder.encode(name,"UTF-8");System.out.println(name);name=java.net....

    一: 我们先看2个编码的情况

    String name=java.net.URLEncoder.encode("测试", "UTF-8");

    System.out.println(name);

    name=java.net.URLEncoder.encode(name,"UTF-8");

    System.out.println(name);

    name=java.net.URLDecoder.decode(name, "UTF-8");

    System.out.println(name);

    System.out.println(java.net.URLDecoder.decode(name, "UTF-8"));

    输出结果是

    %E6%B5%8B%E8%AF%95

    %25E6%25B5%258B%25E8%25AF%2595

    %E6%B5%8B%E8%AF%95

    测试

    二; 我们来看编码一次,提交给服务器的结果

    我们吧“测试”编码一次的字符串%E6%B5%8B%E8%AF%95  ,提交,服务器端用request.getParameter("name")的到参数,然后我们解码

    System.out.println(java.net.URLDecoder.decode(name, "UTF-8"));

    我们发现得到的结果 ???è?  显示乱码。

    因为在request.getParameter("name")之前会自动做一次解码的工作,而且是默认的ISO-8859-1,相当于调用了一次java.net.URLDecoder.decode(name, "ISO-8859-1")

    所以我们再用URLDecoder.decode(name, "UTF-8")就是乱码了。

    三: 我们在看编码2次,提交给服务器的结果

    编码2次的字符串是%25E6%25B5%258B%25E8%25AF%2595 ,服务器端用request.getParameter("name")的到参数,自动按ISO-8859-1解码得到的串是%E6%B5%8B%E8%AF%95  ,也就是编码一次得到的字符串。

    然后,我们在System.out.println(java.net.URLDecoder.decode(name, "UTF-8"));解码输出,得到的结果就是 “测试” 2个汉字。

    展开全文
  • 第一种情况(不修改tomcat配置文件): ...msg="+URLEncoder.encode("用户名或者密码错误")); 前台通过 request.getParameter("msg") 方法调用,然后调用URLDecoder.decode解码,输出msg的内容到页面上,结果msg的...

     

    第一种情况(不修改tomcat配置文件):

    后台通过对中文字符编码

    this.redirect("/login.jsp?isError=1&msg="+URLEncoder.encode("用户名或者密码错误"));

    前台通过 request.getParameter("msg") 方法调用,然后调用URLDecoder.decode解码,输出msg的内容到页面上,结果msg的内容发生乱码

    <%String msg =URLDecoder.decode(request.getParameter("msg"));%>

    msg的内容乱码

    后台修改为

    this.redirect("/login.jsp?isError=1&msg="+URLEncoder.encode(URLEncoder.encode("用户名或者密码错误")));

    msg显示正常的中文内容:用户名或者密码错误

    原因:在调用request.getParameter()方法的时候,使用了服务器指定的编码格式自动解码一次,然后前台再解码一次即可

     

    第二种情况(修改tomcat的配置文件):

    this.redirect("/login.jsp?isError=1&msg="+URLEncoder.encode("用户名或者密码错误","utf-8"));

    此时ie浏览器地址栏显示:http://localhost:8080/login.jsp?isError=1&msg=%E7%94%A8%E6%88%B7%E5%90%8D%E6%88%96%E8%80%85%E5%AF%86%E7%A0%81%E9%94%99%E8%AF%AF

    谷歌浏览器地址栏显示:http://localhost:8080/login.jsp?isError=1&msg=用户名或者密码错误(复制谷歌地址栏的内容,结果粘贴的结果与ie浏览器显示的内容一样)

    修改tomcat的配置文件,添加 URIEncoding="utf-8" 

     <Connector port="8081" protocol="HTTP/1.1"
                    connectionTimeout="20000"
                   redirectPort="8443"
    />

    修改为
    <Connector port="8081" protocol="HTTP/1.1"
                    connectionTimeout="20000"
                   redirectPort="8443" URIEncoding="utf-8"/>

    msg显示正常的中文内容

     

    展开全文
  •  在工作中,需将第三方的内容放到我网页中,但第三方的内容却是由xml,导致页面显示有问题(乱码),... 在查资料时,发现《中文乱码在java中URLEncoder.encode方法要调用两次解决》不错,于是转载如下。  ...

            在工作中,需将第三方的内容放到我网页中,但第三方的内容却是由xml,导致页面显示有问题(乱码),于是需用URLEncoder.encode(content, StandardCharsets.UTF_8.name());语句做编码处理。

            在查资料时,发现《中文乱码在java中URLEncoder.encode方法要调用两次解决》不错,于是转载如下。

            因为在jsp中对中文进行了编码的时候用的是UTF-8的编码方式,而在servlet中调用request.getParameter();方法的时候使用服务器指定的编码格式自动解码一次,所以前台编码一次后台解码一次而解码和编码的方式不用所以造成了乱码的出现,这就类似于以下代码:

    String name=java.net.URLEncoder.encode("测试", "UTF-8");
    System.out.println(name);
    System.out.println(java.net.URLDecoder.decode(name, "ISO-8859-1"));

            编码后的是%E6%B5%8B%E8%AF%95。。

            而用ISO-8859-1解码后的是???è?。。

            但是如果调用的是

    System.out.println(java.net.URLDecoder.decode(name, "UTF-8"));

            则结果是打印“测试”。

            这就印证了之前为什么我在servlet中调用java.net.URLDecoder.decode(request.getParameter("name"), "UTF-8")方法和调用java.net.URLDecoder.decode(request.getQueryString(), "UTF-8")所得到的结果是不一样的,就是由于在request.getParameter("name")之前会自动做一次解码的工作,而且是默认的ISO-8859-1。

            所以,在使用java.net.URLEncoder.decode()和java.net.URLDecoder.decode(),的时候需要在前端页面中使用两次java.net.URLDecoder.decode()方法。

            使用两次编码的过程相当于如下代码:

    String name=java.net.URLEncoder.encode("测试", "UTF-8");
    System.out.println(name);
    name=java.net.URLEncoder.encode(name,"UTF-8");
    System.out.println(name);
    name=java.net.URLDecoder.decode(name, "UTF-8");
    System.out.println(name);
    System.out.println(java.net.URLDecoder.decode(name, "UTF-8"));

            输出为:

    %E6%B5%8B%E8%AF%95
    %25E6%25B5%258B%25E8%25AF%2595
    %E6%B5%8B%E8%AF%95
    测试

            第一次编码后将汉字编码为%和字母数字的格式,而第二次编码的时候是对%字母数字进行编码,虽然解码的时候使用的是ISO-8859-1,但是对于%和字母数字而言用ISO-8859-1和UTF-8解码出来的是一样的,此时就回到了汉字被编码过一次的字符串了,当再次进行解码的时候使用UTF-8就回将它转会汉字。

     

    文章来源:http://www.cnblogs.com/shitou/archive/2011/07/04/2097427.html

    展开全文
  • 关于URLEncoder.encode的用法

    千次阅读 2021-04-02 17:15:02
    try { String objectType = URLEncoder.encode("服务名称", "UTF-8"); URL urlStr = new URL(url + objectType + "&resultPerPage=500"); List, Object>> result = it00015Service.doGet(urlStr,"s-servicedesk:Ben...
  • param = URLEncoder.encode("za4T8MHB/6mhmYgXB7IntyyOUL7Cl++0jv5rFxAIFVji8GDrcf+k8g==", "utf-8"); 然后服务端获取时: String param = URLDecoder.decode(param, "utf-8"); 这样才能获取到正确的值。 注意: ...
  • URLEncoder.encode(String s, String enc)其中:s - String to be translated.enc - The name of a supported character encoding.标准字符集:US-ASCII Seven-bit ASCII, a.k.a. ISO646-US, a.k.a. the Basic Latin...
  • 解决 URLEncoder.encode 编码空格变 + 号

    千次阅读 2021-11-06 17:02:08
    解决 URLEncoder.encode 编码空格变 + 号 jdk自带的URL编码工具类URLEncoder在对字符串进行URI编码的时候,会把空格编码为+号。 空格的URI编码其实是:%20 搜素引擎上不少人都遇到这个问题,哀声一片。 解决办法...
  • param=" + URLEncoder.encode("xxx", "utf-8"); 然后服务端获取时: String param = URLDecoder.decode(param, "utf-8"); 这样才能获得正确的值:"za4T8MHB/6mhmYgXB7IntyyOUL7Cl++0jv5rFxAIFVji8GDrcf+k8g==" 其实 ...
  • URLEncoder.encode()解决中文乱码

    千次阅读 2020-07-10 16:19:09
    tomcat服务器上向指定 URL 发送GET/POST方法的请求中文编码问题解决 使用URLEncoder.encode()方法解决Tomcat发送HTTP...一筹莫展的时候,突然发现了可以使用URLEncoder.encode()方法来解决中文乱码问题。 直接上代码
  • URLEncoder.encode(str) 是一个过期方法,编码默认的是系统编码,在使用这个方法的要注意,代码运行环境的编码格式是不是,和你项目是否一致 URLEncoder.encode(str,enc) 可指定编码格式,强烈推荐使用这个方法,以免造成...
  • C# 实现 java URLEncoder.encode编码

    千次阅读 2020-09-08 16:59:01
    ** 最近碰到一个很坑很难受的问题,公司对接一个java项目碰到C# url编码跟java url编码后不一样,导致最后加密结果不一样 ** C# 中文url编码后是小写的 java 中文url编码后是大写的,且会对非安全字符进行编码 ...
  • URLEncoder.encode 使用心得

    千次阅读 2020-01-03 08:10:17
    1、解决接口GET请求中:参数包含中文问题?... 通过URLEncoder.encode 可以解决。我此次使用的utf-8编码,所以对中文进行urlencode 编码 而在服务器短 使用的tomcat 是不需要进行解码的; 同时,若是...
  • 1、URLEncoder.encode和URLDecoder.decodeURL只能使用英文字母、阿拉伯数字和某些标点符号,不能使用其他文字和符号,即只有字母和数字[0-9a-zA-Z]、一些特殊符号$-_.+!*'()[不包括双引号]、以及某些保留字(空格转换...
  • encode: Uri.EscapeDataString("content").Replace("%20", "+")//用+号代替空格 decode: Uri.UnescapeDataString("content").Replace("+", "%20") 一,为什么要用URLEncoder编码算法? URLEncoder...
  • 当后端需要在response中向前端返回文件时,文件名称通过**URLEncoder.encode()**方法编码后,文本中的(空格)将被转义为(+),此时需要用一下代码做进一步处理,来使得返回前端的文件名正确的携带空格。 String ...
  • 可是这两个地方的url都是UTF-8的,所以url的编码是一致的,问题不在url这里 最后我想到是否可能是在URLEncoder.encode的过程中出了问题,于是我先进去源码可以看到: @Deprecated public static String encode...
  • 原文:Java只给汉字转URLEncoder 转码起因:线上图片显示异常,因为IOS无法显示带中文的图片链接,在之前的文章中介绍了通过转码进行正常显示,后面发现原来的那个转码有问题,不单单是对中文进行转码,对“%E4%BC%...
  • URLEncoder.encode (str,"UTF-8"); URLDecoder.decode(str,"UTF-8"); URLEncoder.encode 和 URLDecoder.decode 处理url的特殊参数 在使用 url 的 queryString 传递参数时,因为参数的值,被DES加密了,而加密得到...
  • 疑问 空格变成了+? -*.... 解惑 URL 编码通常使用加号(+)或 %20 替代空格。...如果要转换为%20,可以先进行转换编码,再替换 + 为... System.out.println(URLEncoder.encode(message, "UTF-8").replace("+","%20")); S
  • 最近开发一个在线坐席的功能,发现推送的消息中空格变成了+ ,查询发现URLEncoder.encode...所以应该在URLEncoder.encode方法之前对字符串进行替换,然后到了页面上在对其进行替换回来代码:java中URLEncoder.encode...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 58,258
精华内容 23,303
关键字:

urlencoder.encode方法