我们有一个表单(method =“GET”),它提交给执行搜索的PHP页面。我们的一位越南用户在Safari中看到一个问题,其中URL中的值(在表单提交期间由Safari提供)与我们在Chrome等中看到的编码不同。人
有问题的表单元素看起来很简单:
<select id="province" name="province" class="inputbox" size="1"><option value="">Vui lòng chọn ...</option><option value="Thành phố Cần Thơ" class="">Thành phố Cần Thơ</option></select>
选择第二个选项并单击“提交”后,Safari中的URL包含:
的index.php?省=青+ PHO + CAN + THO
从Safari的开发人员网络标签中,我可以看到它被请求为: 请求网址:
index.php?province=Th%C3%A0nh+ph%E1%BB%91+C%E1%BA%A7n+Th%C6%A1&
在Chrome中,执行完全相同的搜索,我将网址视为
index.php?province=Tha%CC%80nh+ph%C3%B4%CC%81+C%C3%A2%CC%80n+Th%C6%A1
请注意它有点长。 HTML演示文稿也略有不同。请参阅左侧的Safari和右侧的Chrome:
http://screencast.com/t/hV7PilKRB4gF
此页面的响应标题是“Content-Type:text / html; charset = utf-8” HTML字符集是
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
当服务器从Safari获取内容时,查询子句如下所示:
http://screencast.com/t/ZrUrATbVgkS
(我必须在这里使用截图,因为复制查询会删除字符中的视觉差异)
当服务器收到Chrome的请求时,它看起来像这样:
REPLACE(province
,'','')='ThànhphốCầnThơ'
Chrome会返回正确的结果,Safari不会返回任何结果。
将网址编码参数从Chrome复制并粘贴到Safari会产生正确的结果。 (这些请求之间没有视觉差异),可能意味着Safari在URL中放置的值不正确,但是当正确的值存在时,它请求就好了。
我不确定以下哪个可能是问题所在: 1)值没有以正确的编码/格式进入HTML 2)Safari的FORM GET请求期间值被破坏了
有什么想法?谢谢!
答案 0 :(得分:-1)
您可以使用rawurlencode(“ThànhphốCầnThơ”)设置此选项的值(理想情况下所有其他选择选项),而不是原始字符串