请注意,以上大多数答案都是不正确的。
这个URLEncoder类,尽管是名字,但不需要在这里。不幸的是,Sun如此恼怒地命名了这个类。URLEncoder用于将数据作为参数传递,而不是编码URL本身。
换句话说,"http://search.barnesandnoble.com/booksearch/first book.pdf"是网址。例如,参数将是,"http://search.barnesandnoble.com/booksearch/first book.pdf?parameter1=this¶m2=that"..这些参数是您要使用的URLEncoder为。
以下两个例子突出了两者之间的差异。
下面根据HTTP标准生成错误的参数。注意,符号(&)和加号(+)的编码不正确。uri = new URI("http", null, "www.google.com", 80, "/help/me/book name+me/", "MY CRZY QUERY! +&+ :)", null);
// URI: http://www.google.com:80/help/me/book%20name+me/?MY%20CRZY%20QUERY!%20+&+%20:)
以下内容将生成正确的参数,并对查询进行正确编码。注意空格、符号和加号。uri = new URI("http", null, "www.google.com", 80, "/help/me/book name+me/", URLEncoder.encode("MY CRZY QUERY! +&+ :)", "UTF-8"), null);
// URI: http://www.google.com:80/help/me/book%20name+me/?MY+CRZY+QUERY%2521+%252B%2526%252B+%253A%2529