是否有一个编码泛型的类 String
遵循RFC 3986规范?
那是: "hello world"
=> "hello%20world"
不(RFC 1738): "hello+world"
谢谢
是否有一个编码泛型的类 String
遵循RFC 3986规范?
那是: "hello world"
=> "hello%20world"
不(RFC 1738): "hello+world"
谢谢
如果是网址,请使用URI
URI uri = new URI("http", "//hello world", null);
String urlString = uri.toASCIIString();
System.out.println(urlString);
如果是网址,请使用URI
URI uri = new URI("http", "//hello world", null);
String urlString = uri.toASCIIString();
System.out.println(urlString);
解决了这个问题:
方法 encodeUri
来源:Twitter 符合RFC3986的编码功能。
此方法接受字符串并将其转换为RFC3986特定的编码字符串。
/** The encoding used to represent characters as bytes. */
public static final String ENCODING = "UTF-8";
public static String percentEncode(String s) {
if (s == null) {
return "";
}
try {
return URLEncoder.encode(s, ENCODING)
// OAuth encodes some characters differently:
.replace("+", "%20").replace("*", "%2A")
.replace("%7E", "~");
// This could be done faster with more hand-crafted code.
} catch (UnsupportedEncodingException wow) {
throw new RuntimeException(wow.getMessage(), wow);
}
}
在不知道是否有一个。有一个类提供编码,但它将“”更改为“+”。但是你可以使用String类中的replaceAll方法将“+”转换成你想要的。
str.repaceAll( “+”, “%20”)
在Spring Web应用程序的情况下,我能够使用这个:
UriComponentsBuilder.newInstance()
.queryParam("KEY1", "Wally's crazy empôrium=")
.queryParam("KEY2", "Horibble % sign in value")
.build().encode("UTF-8") // or .encode() defaults to UTF-8
返回String
?KEY1 = Wally的%20crazy%20emp%C3%B4rium%3D&KEY2 = Horibble%20%25%20sign%20英寸%20value
对我最喜欢的网站之一进行交叉检查会显示相同的结果,“URI的百分比编码”。在我看来很好。 http://rishida.net/tools/conversion/