gpt4 book ai didi

java - Apache commons 的 URLCodec 解码数据并将字符替换为问号 (?)

转载 作者:行者123 更新时间:2023-12-02 07:16:37 27 4
gpt4 key购买 nike

我在使用 Apache commons 的 URLCodec 解码像“1°”这样的数据时遇到一个问题。它被解码为“1?”。

这个问题有解决办法吗?

在我尝试使用以下代码之前:

字符串decodedData = new URLCodec().decode(data, "ISO-8859-1");

我也尝试过使用下面的代码。但这并没有帮助。

字符串decodedData = new URLCodec().decode(data, "UTF-8");

最佳答案

根据文档,解码函数是接收标准 URL,并从中解码出值。 www-form-urlencoded 编码值中只能包含一组指定的 ASCII 值。

您的问题表明您提交的 URL 值中包含的字符不在 www-form-urlencoded 的有效范围内。

答案是:我相信您正在尝试解码一个未正确 www-form-urlencoded 的值,这就是问题的根源。

您给出的值:1°,即数字 1,后跟“男性序数指示符”(假设编辑此 StackOverflow 条目时没有任何内容被扭曲)。阳性序数指示符的十进制值是 186,即十六进制值 00BA。

假设您将该值作为未编码数据开始,那么这两个字符序列的 www-form-urlencoded 值将取决于您使用的是 UTF-8 还是 ISO-8859-1。以下是每个的编码版本:

unencoded value:                           1º
www-form-urlencoded using ISO-8859-1 is: 1%BA
www-form-urlencoded using UTF-8 is: 1%C2%BA

如果您采用编码形式,并将其传递给解码器,您应该得到未编码的形式。但是,没有定义当您获取未编码版本并尝试对其进行解码时会发生什么。由于没有定义,实际实现和实际结果可能会有所不同。它可能应该抛出异常作为无效编码,但这也不能保证。

关于java - Apache commons 的 URLCodec 解码数据并将字符替换为问号 (?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14868837/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com