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

为什么地址栏中的UTF-8Unicode和GET格式在C中有所不同?,c,unicode,utf-8,cgi,fastcgi,C,Unicode,Utf 8,Cgi,Fastcgi,我用C语言开发了一个简单的网页 我将获取url地址值,并使用strtok、strep检查它们 que=getenv("QUERY_STRING"); ... strcpy(val,strsep(&string,"=")); printf("%s<br>",val); 尝试使用不同的值: 可以使用DecodeQueryStringC中的函数轻松修复该问题 这是由Max Base编写的 尝试使用不同的值: 我还希望在用户手动修改URL(链接)时提供支持。 告诉我。我

我用C语言开发了一个简单的网页

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

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

尝试使用不同的值: 可以使用DecodeQueryStringC中的函数轻松修复该问题

这是由Max Base编写的

尝试使用不同的值:
我还希望在用户手动修改URL(链接)时提供支持。
告诉我。

我不知道阿拉伯语如何,在希伯来语中有不同类型的编码。像UTF8和其他版本一样,没有涉及到细节,但是你检查过了吗?我在你的帖子中没有任何与此相关的内容

字符串


不解码为
۱
,而是
和#1779这是一个HTML实体,而不是UTF-8。您不应该使用
decodeHtmlEntities
,而应该只使用
decodeUrl
。同样,也有一些代码正在执行重定向,但做得太多。

我在浏览器中添加了一些屏幕截图,您可以看到它们。当用户在页面中提交表单时,encodeUrl函数可以解决问题。但是如果用户手动更改链接并键入utf8。。。那么我无法修复。您尚未声明响应的字符集。。。默认为ISO 8859-1,您将获得。提示:
内容类型:text/html;charset=UTF-8
通过
内容类型:text/html解决;charset=UTF-8\r\n
,请更改答案文本以确认。感激的
identifier=%26%231777%3B 
۱   => %26%231777%3B
۲   => %26%231778%3B
۳   => %26%231779%3B
۱۲۳ => %26%231777%3B%26%231778%3B%26%231779%3B
decodeUrl(val,val);
printf("Fix:%s<br>",val);
identifier=%DB%B1 
۱   => %DB%B1
۲   => %DB%B2
۳   => %DB%B3
۱۲۳ => %DB%B1%DB%B2%DB%B3
%26%231779%3B