gpt4 book ai didi

java - 发布请求正文的 Urlencoding 数据。我使用了错误的字符集吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:24:26 26 4
gpt4 key购买 nike

我想用 Java 复制一个有效的 POST 请求。出于测试目的,让我们获取如下消息:'äöõüäöõüäöõüäöõü'

工作 POST 请求(带有 'äöõüäöõüäöõüäöõü' 的编码消息):

标题

POST http://www.mysite.com/newreply.php?do=postreply&t=477352 HTTP/1.1
Host: www.warriorforum.com
Connection: keep-alive
Content-Length: 403
Origin: http://www.mysite.com
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko)Chrome/14.0.835.202 Safari/535.1
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Accept: */*
Referer: http://www.mysite.com/test-forum/477352-test.html
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: bblastvisit=1319205053; bblastactivity=0; bbuserid=265374; bbpassword=1125e9ec1ab41f532ab8ec6f77ddaf94; bbsessionhash=91444317c100996990a04d6c5bbd8375;

正文

securitytoken=1319806096-618e5f9012901e2d818bf2c74c2121baa064be57&ajax=1&ajax_lastpost=1319806096&**message=%u00E4%u00F6%u00F5%u00FC%u00E4%u00F6%u00F5%u00FC%u00E4%u00F6%u00F5%u00FC%u00E4%u00F6%u00F5% u00FC**&wysiwyg=0&styleid=1&signature=1&fromquickreply=1&s=&do=postreply&t=477352&p=who%20cares&specifiedpost=0&parseurl=1&loggedinuser=265374

正如我们在请求正文中看到的,'äöõüäöõüäöõüäöõü 被编码为: %u00E4%u00F6%u00F5%u00FC%u00E4%u00F6%u00F5%u00FC %u00E4%u00F6%u00F5%u00FC%u00E4%u00F6%u00F5%u00FC

现在我想复制它。

让 Url 在 Java 中使用字符集 utf-8 对文本进行编码:

String userText = "äöõüäöõüäöõüäöõü";
String encoded = URLEncoder.encode(userText, "utf-8");

结果:%C3%A4%C3%B6%C3%B5%C3%BC%C3%A4%C3%B6%C3%B5%C3%BC%C3%A4%C3 %B6%C3%B5%C3%BC%C3%A4%C3%B6%C3%B5%C3%BC%0A%0A%0A%5BSIZE%3D%221%22%5D%5BI%5D << 不是一样

让我们试试 ISO-8859-1:

String userText = "äöõüäöõüäöõüäöõü";
String encoded = URLEncoder.encode(userText, "ISO-8859-1");

结果:%E4%F6%F5%FC%E4%F6%F5%FC%E4%F6%F5%FC%E4%F6%F5%FC%0A%0A%0A %5BSIZE%3D%221%22%5D%5BI%5D << 不一样

它们都不会产生与工作示例中相同的编码字符串,但它们都有相同的输入。我在这里缺少什么?

最佳答案

%u00E4%u00F6%u00F5%u00FC%u00E4%u00F6%u00F5%u00FC%u00E4%u00F6%u00F5%u00FC%u00E4%u00F6%u00F5%u00FC

我不知道上面的数据编码成什么,但不是application/x-www-form-urlencoded; charset=UTF-8 如请求所述。这不是此 MIME 类型的合法数据。

它看起来像某种 UTF-16BE 编码形式。

URLEncoder.encode(userText, "utf-8"); 将是对 application/x-www-form-urlencoded; 进行编码的正确方法; charset=UTF-8 值,如果这实际上是服务器所期望的。 ( ref )

关于java - 发布请求正文的 Urlencoding 数据。我使用了错误的字符集吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7930073/

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