2016-04-14 102 views
0

我正在開發一項服務,您可以通過get參數向此服務發送不同的參數。

例如:

www.example.com?query=john &位置= ...

也可以發送變音這項服務。

Ex。

www.example.com?query=müller

我現在的問題是,我不知道該怎樣參數發送到我的服務的影響,所以我決定來測試它了很多並發現,如果您嘗試通過我們的內部系統(與Sharepoint一起運行)調用它,並且如果您使用Internet Explorer,事情就會變得很奇怪。首先,這些參數是這個樣子,上面的第二個例子:

www.example.com?query=mller

我已經可以發現,如果有人使用IE瀏覽器,但我仍然不確定,我該如何解決這個問題。

我已經試過使用urlencode()(還有很多其他功能,但它們並沒有真正改變結果),它返回m%3Fller。在這種情況下,我期望的輸出將是m%C3%BCller

是否有可能通過我的服務解決此問題或者是Sharepoint中的問題?我已經用一個簡單的HTML表單重現了szenario,所有必需的參數都是簡單的文本字段,並且它在那裏工作得很好。

編輯:

我期望的輸出是將這個代碼對你的PHP代碼的第一行中的一個URL(ü => %C3%BC

+1

問題是,它看起來像那樣嗎?根據顯示的位置,你應該看看輸出是真的UTF-8/unicode而不是iso-8859-1(latin1)還是某種。此外,根據您的瀏覽器(版本),它可能會發送在非unicode –

+0

它已經發送到我的瀏覽器這樣,這意味着,我從來沒有真正得到'müller',我只得到這個 而不是ü – PrototypeX7

+0

是你是否在HTTP響應或頁面的任何地方聲明瞭任何關於字符集/編碼的內容,或者只是將它留給瀏覽器來決定? (你可能猜到後者效率不高。) – deceze

回答

2

以正確的形式變音:

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

它將字符集更改爲支持Ü的utf-8。

您還可以使用htmlentities改變Üüuuml;,但如果你不想,你也可以只用urlencode它返回一個字符串中的所有非字母數字字符,除了-_。已被替換爲百分號(%)符號,後跟兩個十六進制數字和空格,編碼爲加號(+)。

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

+0

現在這樣做了,但它並沒有真正改變結果。正如上面在我的問題中提到的那樣,我對信件如何發送到我的服務沒有影響。 'urlencode'返回比 更好的東西,但它不是我想要的。其實我只需要發送這個參數到另一個網站(也帶有參數),但它應該是正確的格式,這是(在我的情況下)'%C3%BC'爲'ü' – PrototypeX7

0

這取決於你的網頁的編碼,我想如果有可能將其更改爲UTF-8建議,然後例如像這樣:

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

威爾回報你適當的價值:

string(11) "m%C3%BCller" 
+0

我的問題是,我從來沒有得到正確的值(在這種情況下'müller'),我只得到 – PrototypeX7

+0

您使用哪種編碼? – Tomasz

+0

應該是UTF-8'header('Content-Type:text/html; charset = utf-8');' – PrototypeX7

相關問題