例如可以保留欧元符号后的编码。
HttpClient httpClient = getHttpClient();
// set POST method details
PostMethod post = new PostMethod(url_p);
post.setRequestHeader(
"Content-Type", PostMethod.FORM_URL_ENCODED_CONTENT_TYPE);
String beforeEncoding = "Price is €100";
String afterEncoding = java.net.URLEncoder.encode(beforeEncoding,UTF-8);
post.setRequestBody(afterEncoding);
httpClient.executeMethod(post);
显示价格+ is +%80100
可能会显示价格+是+€100
答案 0 :(得分:1)
如果通信使用的是UTF-8(对€符号敏感),则应执行以下操作:
String afterEncoding = java.net.URLEncoder.encode(beforeEncoding, "UTF-8");
String afterEncoding = java.net.URLEncoder.encode(beforeEncoding, StandardCharsets.UTF_8);
不建议使用不带编码的重载encode
。
请注意,System.out
使用平台的编码:System.getProperty("file.encoding")
或Charset.defaultCharset()
。
评论后
或者根本不编码,然后设置正文的编码。
PostMethod post = new PostMethod(url);
post.getParams().setContentCharset("UTF-8");
答案 1 :(得分:0)
否,不支持URLEncoder.encode
。如果您的例子很简单,则可以坚持简单的String.replace
:
String beforeEncoding = "Price is €100";
String afterEncoding = beforeEncoding.replace(' ', '+');
System.out.println(afterEncoding);