2

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

例如:

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

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

前任。

www.example.com?query=müller

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

www.example.com?query=m�ller

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

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

是否有可能通过我的服务解决这个问题,或者是 Sharepoint 中的问题?我已经用一个简单的 HTML 表单复制了 szenario,其中所有必需的参数作为简单的文本字段,它在那里工作得很好。

编辑:

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

4

3 回答 3

2

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

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

它将字符集更改为支持Ü.

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

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

于 2016-04-14T12:09:22.923 回答
1

它通过表格传递吗?如果是这样,对我来说这解决了问题,只需将 accept-charset="UTF-8" 添加到表单

于 2018-12-14T09:05:05.673 回答
0

这取决于您的页面编码,我建议是否可以将其更改为 UTF-8,然后是这样的示例:

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

将为您返回正确的值:

string(11) "m%C3%BCller"
于 2016-04-14T12:10:51.453 回答