在Safari中UTF-8 GET URL编码问题

时间:2015-10-08 16:11:06

标签: encoding utf-8 safari

我们有一个表单(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请求期间值被破坏了

有什么想法?谢谢!

1 个答案:

答案 0 :(得分:-1)

您可以使用rawurlencode(“ThànhphốCầnThơ”)设置此选项的值(理想情况下所有其他选择选项),而不是原始字符串