gpt4 book ai didi

c - 为什么地址栏中的 UTF-8 Unicode 与 GET 形式在 C 中有所不同?

转载 作者:太空宇宙 更新时间:2023-11-03 23:58:30 24 4
gpt4 key购买 nike

我使用 C 开发了一个简单的网页。

我将获取 url 地址值并使用 strtok、strsep 检查它们。

que=getenv("QUERY_STRING");
...
strcpy(val,strsep(&string,"="));
printf("%s<br>",val);

使用 <form method="GET"> 时的浏览器结果

例如:当您键入 ۱在输入字段中并按提交,它重定向到 http://localhost/api?identifier=%26%231777%3B .

getenv("QUERY_STRING") 的输出:

identifier=%26%231777%3B 

Address bar Browser Output

尝试不同的值:

۱   => %26%231777%3B
۲ => %26%231778%3B
۳ => %26%231779%3B
۱۲۳ => %26%231777%3B%26%231778%3B%26%231779%3B

可以使用 DecodeQueryStringC 中的函数轻松修复它。

这是由 Max Base 编写的。

https://github.com/BaseMax/DecodeQueryStringC

decodeUrl(val,val);
printf("Fix:%s<br>",val);

在地址栏中手动输入时的浏览器结果

我正在使用 Firefox 60.5.1esr (64-bit)Chromium 71.0.3578.98 (Official Build) (64-bit) .

例如:当键入 ‍ ?identifier=۱ 时在 http://localhost/api 的末尾:

它重定向到http://localhost/api?identifier=%DB%B1由浏览器自动生成。

getenv("QUERY_STRING") 的输出:

identifier=%DB%B1 

Address bar Browser Output

尝试不同的值:

۱   => %DB%B1
۲ => %DB%B2
۳ => %DB%B3
۱۲۳ => %DB%B1%DB%B2%DB%B3

我还想在用户手动修改 URL(链接)时支持。指导我。

最佳答案

percent-encoded字符串

%26%231779%3B

不解码为 1۳ 是 HTML 实体而不是 UTF-8。您不应该使用 decodeHtmlEntities,而只是 decodeUrl。同样,有些代码正在执行重定向,但做得太多了。

关于c - 为什么地址栏中的 UTF-8 Unicode 与 GET 形式在 C 中有所不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55075034/

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