我用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
۱ => %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
۱ => %DB%B1
۲ => %DB%B2
۳ => %DB%B3
۱۲۳ => %DB%B1%DB%B2%DB%B3
当用户手动修改URL(链接)时,我也想支持。引导我。
%26%231779%3B
不解码到۱
但۳
这是一个HTML实体而不是UTF-8。你不应该使用decodeHtmlEntities
而只是decodeUrl
。同样地,有一些代码正在执行重做过多的操作。
不知道阿拉伯语怎么样,在希伯来语中有不同类型的编码。像UTF8和其他一样,没有细节,但你检查了吗?我的帖子中没有任何相关内容。