当我查看我填写的表单的HTML源代码时,我得到:
<input name="utf8" type="hidden" value="✓" />
但是,当我提交表单(在每个名称和值上调用urlencode)时,浏览器的请求正文显示:
utf8=%E2%9C%93
我认为两者都解码为相同的刻度字符,但为什么它们不同?我要求自动测试。
答案 0 :(得分:1)
输入值是字符的html entity表示。在这种情况下,它在浏览器中具有相同的效果,就像您将实际字符写为值:
<input name="utf8" type="hidden" value="✓" />
服务器已经接受了unicode字符作为POST字段,而不是实体字符串。
在角色上运行urlencode()后,您将获得其编码值,即%E2%9C%93
。
如果你没有在字段上运行urlencode(),你将得到实际的字符:
array(1) { ["utf8"]=> string(3) "✓" }