我有一个URL:http://www.123.com:8080/LinkAction.do?content=891+我爱你,就是需要传递“891+我爱你”(包括+号)然后我用构成
URL url=new URL("http://www.123.com:8080/LinkAction.do?content=891+我爱你")用JAVA内部方法去访问,而不是用浏览器。我的取值方法为:request.getParameter("content")如果用浏览器,我知道必须把“+”替换成“%2B”才能正确的传递“+”,并取得参数“891+我爱你”,于是我把url改成:URL url=new URL("http://www.123.com:8080/LinkAction.do?content=891%2B我爱你") 结果“+”被替换成空格,取到的值为“891 我爱你”然后我又想到方法:把content的值用java.net.URLEncoder.encode一下,即:URL url=new URL("http://www.123.com:8080/LinkAction.do?content="+java.netURLEncoder.encode("891%2B我爱你")),结果报505错误~综上所述,我的问题是,如果用JAVA去内部访问(非浏览器)一个带"+"的URL,改怎么正确传递这个“+”啊?

解决方案 »

  1.   

    java.net.URLEncoder.encode("891+我爱你","GBK");这样用。
      

  2.   

    URLEncoder.encode("http://www.123.com:8080/LinkAction.do?content=891+我爱你",
            "GBK")得到
    http%3A%2F%2Fwww.123.com%3A8080%2FLinkAction.do%3Fcontent%3D891%2B%CE%D2%B0%AE%C4%E3如果只编码最后,得到
        System.out.println("http://www.123.com:8080/LinkAction.do?content="
            + URLEncoder.encode("891+我爱你", "GBK"));http://www.123.com:8080/LinkAction.do?content=891%2B%CE%D2%B0%AE%C4%E3
      

  3.   

    编码问题。把你的那个参数URLEncoding就可以了。
      

  4.   

    System.out.println("http://www.123.com:8080/LinkAction.do?content=" 
            + URLEncoder.encode("891+我爱你", "GBK")); 
    应该没问题。
    不行换成UTF-8试试。