2016-04-14 10 views
0

Ich entwickle einen Dienst und Sie können verschiedene Parameter zu diesem Dienst über den Parameter get senden.

Zum Beispiel:

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

Es ist auch möglich, Umlaute zu diesem Dienst zu senden.

Ex.

www.example.com?query=müller

Mein Problem ist jetzt, dass ich keinen Einfluss haben, wie Parameter zu meinen Dienst gesendet werden, also habe ich beschlossen, es viel zu testen und entdeckt, dass, wenn Sie versuchen, es über unser internes System (das mit Sharepoint läuft) aufzurufen und wenn Sie den Internet Explorer verwenden, die Dinge merkwürdig werden. Vor allem diejenigen Parameter in etwa so aussehen, mit dem zweiten Beispiel oben:

www.example.com?query=mller

ich schon erkennen kann, wenn jemand mit IE ist, aber ich bin mir immer noch nicht sicher, wie ich dieses Problem beheben kann.

Ich habe bereits versucht, urlencode() (und eine Menge anderer Funktionen, aber sie nicht wirklich das Ergebnis zu ändern), die m%3Fller zurückgibt. Meine gewünschte Ausgabe wäre in diesem Fall m%C3%BCller

Ist es irgendwie möglich, dies mit meinem Service zu lösen oder ist das Problem in Sharepoint? Ich habe das Szenario bereits mit einem einfachen HTML-Formular mit allen erforderlichen Parametern als einfache Textfelder reproduziert und es funktioniert dort gut.

EDIT:

Meine gewünschte Ausgabe ist der Umlaut in der richtigen Form für eine URL (ü => %C3%BC)

+1

Die Frage ist, wo Sieht es so aus? Abhängig davon, wo es angezeigt wird, sollten Sie schauen, ob die Ausgabe wirklich UTF-8/Unicode anstelle von iso-8859-1 (latin1) oder einer anderen Art ist. Abhängig von Ihrem Browser (Version) könnte es auch in nicht-Unicode gesendet werden –

+0

Es ist bereits an meinen Browser wie folgt gesendet, was bedeutet, ich bekomme nie wirklich den 'Müller', ich bekomme nur dieses anstelle des ü – PrototypeX7

+0

Are Sie deklarieren irgendwo in Ihrer HTTP-Antwort oder auf Ihrer Seite irgendetwas in Bezug auf Zeichensätze/Kodierungen oder überlassen Sie es dem Browser, dies zu entscheiden? (Sie haben vielleicht geahnt, dass Letzteres nicht sehr produktiv ist.) – deceze

Antwort

2

diesen Code auf einem der ersten Zeilen PHP-Code Put:

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

Es ändert den Zeichensatz zu utf-8, der die Ü unterstützt.

Sie können auch htmlentities verwenden, um die Ü-üuuml; aber wenn Sie nicht wollen, dass Sie auch die, in denen eine Zeichenfolge zurückgibt alle außer -_ nicht-alphanumerische Zeichen nur urlencode können sich ändern. wurden durch ein Prozentzeichen (%) gefolgt von zwei Hexadezimalziffern und Leerzeichen ersetzt, die als Pluszeichen (+) codiert sind.

Quelle:
http://php.net/manual/en/function.htmlentities.php
http://php.net/manual/en/function.urlencode.php

+0

Hat das jetzt getan, aber es ändert nicht wirklich das Ergebnis. Wie ich bereits oben in meiner Frage erwähnt habe, habe ich keinen Einfluss darauf, wie Briefe an meinen Dienst geschickt werden. 'urlencode' gibt etwas besseres zurück als das , aber es ist nicht das was ich will. Eigentlich muss ich nur diesen Parameter an eine andere Webseite senden (auch mit get Parameter), aber es sollte im richtigen Format sein, was (in meinem Fall) '% C3% BC' für' '' – PrototypeX7

0

Es ist auf Ihrer Seite Codierung abhängt, würde ich vorschlagen, wenn es möglich ist, es in UTF-8 zu ändern, dann beispielsweise wie folgt aus:

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

Will geben Sie den richtigen Wert zurück:

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

ist. Mein Problem ist, dass ich nie den richtigen Wert bekomme (in diesem Fall 'müller'), bekomme ich nur die – PrototypeX7

+0

Welche Codierung verwendest du? – Tomasz

+0

Sollte UTF-8 sein 'header ('Inhaltstyp: text/html; charset = utf-8');' – PrototypeX7

Verwandte Themen