变音符号在不同浏览器中出现$ _GET参数(PHP)

时间:2016-04-14 12:02:53

标签: php url encoding getparameter

我正在开发服务,您可以通过get参数向此服务发送不同的参数。

例如:

  

www.example.com?query=john&location = ...

也可以将变音符号发送到此服务。

实施例

  

www.example.com?query=müller

我现在的问题是,我对参数如何发送到我的服务没有影响,所以我决定对它进行大量测试并发现,如果你试图通过我们的内部系统调用它(与之一起运行) Sharepoint)如果你使用Internet Explorer,事情开始变得怪异。首先,这些参数看起来像这样,上面的第二个例子:

  

www.example.com?query=mller

我已经可以检测到,如果有人使用IE浏览器,但我仍然不确定,我该如何解决这个问题。

我已经尝试使用urlencode()(和许多其他函数,但它们并没有真正改变结果),它返回m%3Fller。在这种情况下,我想要的输出是m%C3%BCller

以某种方式可以用我的服务来解决这个问题,还是Sharepoint中的问题?我已经用简单的HTML表单复制了szenario,其中包含所有必需的参数作为简单的文本字段,并且在那里工作正常。

编辑:

我想要的输出是url的正确形式的变音符号(ü => %C3%BC

3 个答案:

答案 0 :(得分:2)

将此代码放在PHP代码的第一行:

header('Content-Type: text/html; charset=utf-8');

它将charset更改为支持Ü的utf-8。

您还可以使用htmlentitiesÜ更改为üuuml;,但如果您不想要,也可以使用urlencode返回一个字符串,其中除-_之外的所有非字母数字字符。已被替换为百分号(%)后跟两个十六进制数字和空格编码为加号(+)。

来源:
http://php.net/manual/en/function.htmlentities.php
http://php.net/manual/en/function.urlencode.php

答案 1 :(得分:0)

这取决于您的页面编码,我建议如果可以将其更改为UTF-8,那么示例如下:

<?php
$txt = "müller";
$output = urlencode($txt);
var_dump($output);

会给你正确的价值:

string(11) "m%C3%BCller"

答案 2 :(得分:0)

它通过表格吗? 如果是这样,对我来说,这可以解决问题,只需将accept-charset =“ UTF-8”添加到表单中