2010-12-14 8 views
3

Ich habe einige Probleme und ich fragte mich, ob jemand von Ihnen mir helfen könnte.Akzente, URLs und Firefox

Ich habe meine Website & DB auf utf8 eingestellt. Ich habe ein Problem, wenn ich Akzente im Abschnitt Abfragezeichen eingibt ã wendet sich an % E3, aber wenn ich Links oder Formulare innerhalb der Seite verwendet gibt es % C3% A3 in der URL.

Was kann ich tun?

EDIT: Lassen Sie mich versuchen, diese ein bisschen zu klären:

Ich versuche, akzentuierte Zeichen in meinen URLs zu verwenden (Query-Strings), aber ich habe etwas von einer harten Zeit, dies dem Weg zur Arbeit über mehrere Browser. Einige Browser wie Firefox und IE geben eine andere prozentcodierte Zeichenfolge aus, je nachdem, ob ich ein Formular innerhalb der Seite verwende oder das Akzentzeichen in die Adressleiste eintippe. Wie ich in meiner ursprünglichen Frage sagte ã in einer Form inputed wendet sich an % C3% A3 in der URL, aber wenn ich ã in die Adressleiste eingeben, ändert sich der Browser, dass E3 zu % in der URL .

Diese Dinge für mich kompliziert, denn wenn ich % E3, dann in php/html ich ein unbekanntes Zeichen bekommen bekommen (das ist der Diamant Fragezeichen, richtig?)

Hoffentlich hilft - lassen Sie mich wissen Andernfalls.

+0

Ich habe meine Frage bearbeitet und meine zuvor gestellten Fragen durchgesehen. Vielen Dank. – RS7

+0

Es ist immer noch nicht klar: kein Browser gibt jemals eine URL aus, nur wenn Sie ein Formular auf einer HTML-Seite haben. Damit etwas passiert, müssen Sie Text in das Formular eingeben, und dann muss der Server das Formular verarbeiten, und dann könnte der Browser eine andere URL präsentieren. Also formuliere deine Klarstellung in der Form: 1. das mache ich. 2. Das ist was passiert. 3. Dies sollte stattdessen geschehen. –

+0

@Martin: das OP verwendet 'method =" GET "' (die Standardmethode für HTML-Formulare). Ob eine andere URL angezeigt wird, kann vom Server vollständig kontrolliert werden. Der Server möchte möglicherweise eine Weiterleitung senden, die URL wird dann in die vom Server angegebene Weiterleitungs-URL geändert, andernfalls wird die URL nur diejenige URL sein, an die die Anfrage gesendet wurde (dh die URL, die im Formular "action" angegeben ist) Mit den übergebenen Werten in einer Abfragezeichenfolge für den Fall war die Methode "GET". – BalusC

Antwort

6

ã in einer Form inputed dreht sich zu% C3% A3 in der URL

auf dem Formular Kodierung abhängt, die in der Regel von der Codierung der Seite genommen wird, die die Form enthält. %C3%A9 ist die korrekte UTF-8-URL-codierte Form von .

Wenn ich ã in die Adressleiste eintippe, ändert der Browser das in% E3 in der URL.

Dies ist Browser-abhängig. Wenn Sie nicht-ASCII-Zeichen in der URL in Adressleiste setzen:

http://www.example.com/test.p/café?café 

WebKit-Browser kodieren sie alle als UTF-8:

http://www.example.com/test.p/caf%C3%A9?caf%C3%A9 

die IMO die meisten richtig ist, wie pro IRI. Aus historischen Gründen verwenden IE und Opera jedoch die standardmäßige Systemcodierung des Betriebssystems, um nur den in die Abfragezeichenfolge eingegebenen Text zu codieren. So auf der westeuropäischen Windows-Installation (mit Codepage 1252), erhalten Sie:

http://www.example.com/test.p/caf%C3%A9?caf%E9 

Für Zeichen, die nicht im System vorhandene Codierung sind, IE und Opera ersetzt sie mit einem ?. Firefox verwendet die Systemcodierung für alle Zeichen in der Abfragezeichenfolge oder andernfalls UTF-8.

Schrecklich und inkonsistent, aber es ist ziemlich selten für Benutzer, Abfragezeichenfolgen manuell einzugeben.

+0

Vielen Dank für Ihre Antwort - das ist, was ich erlebe. Ich denke, ich sollte die URL in eine nicht akzentuierte Version ändern, falls der Benutzer auf eine nicht prozentcodierte URL klickt, die der Browser ausgegeben hat. Irgendwelche anderen Alternativen? Danke noch einmal. – RS7

+0

Ich habe ein bisschen mehr experimentiert und das macht wirklich meinen Kopf weh. Ich dachte daran, Akzente zu streichen, aber alle Methoden, die ich versucht habe, geben mir immer noch das Ersatzzeichen, wenn ich in der URL ein Zeichen mit Akzent eintippe. Ich habe bemerkt, dass Google es akzeptiert - weißt du, wie ich es umwandeln kann? Danke – RS7

+0

Klicken Sie auf einen URI ist kein Problem, es ist nur, wenn der Benutzer versucht, eine IRI mit einem Nicht-ASCII-Abfrage-String kopieren, müssen Sie sich sorgen. Wenn Sie einen verarbeitbaren URI auf die Seite setzen wollen, muss dieser bereits '%' -kodiert sein: schreiben Sie einfach '...? Foo = caf% C3% A9' direkt mit' rawurlencode() 'auf einem UTF- 8 Zeichen. Beim Laden zeigt der Browser normalerweise die nicht-gescannte Version in der Adressleiste an. Ich würde mir keine Sorgen darüber machen, dass Benutzer Zeichen manuell in den URI eingeben. – bobince