为什么org.apache.http.client.utils.URLEncodedUtils.parse(“param1 =%C3%A9”,Charset.forName(“UTF-8”))返回“é”?

时间:2015-07-09 16:16:16

标签: utf-8 character-encoding

我试着理解为什么URLEncodedUtils.parse(String,Charset)方法正在改变我的参数编码。

这是我的断言,我认为应该是错的,但它返回true:

assertEquals(URLEncodedUtils.parse("param1=%C3%A9", Charset.forName("UTF-8")).get(0).getValue(), "é");

由于%C3%A9已经是“é”的UTF-8编码值,我不希望它被转换。

这就是我所期望的:

assertEquals(URLEncodedUtils.parse("param1=%C3%A9", Charset.forName("UTF-8")).get(0).getValue(), "%C3%A9");

1 个答案:

答案 0 :(得分:0)

URLEncodedUtils.parse(String,Charset)按预期工作。

实际上,http客户端应该散列“é”,然后在内容中发送%C3%A9。然后,我会在“é”中解码%C3%A9,并且可以对其进行哈希处理。