3 Stimmen

Wie man mit einer URL mit dem Zeichen 'é' in Safari umgeht?

Ich habe Dateien, die ich über Links in einem Menü von meiner Webseite aus öffnen/herunterladen muss. Mein Problem ist, wenn ich versuche, eine Datei mit einem 'É' darin mit Safari (7.0.1) zu öffnen. Es funktioniert mit Firefox 26.0, Chrome 32.0.17 und IE.

Der Name in der URL ist korrekt, aber der Nicht gefunden-Fehler zeigt einen vollständig anderen Namen an.

In der URL: FORMULAIRE%20-%20ENVOI%20DE%20MESSAGE%20PAR%20TÉLÉCOPIEUR.doc

Die Fehlermeldung auf der Seite:

FORMULAIRE - ENVOI DE MESSAGE PAR TÉLÉCOPIEUR.doc wurde auf diesem Server nicht gefunden.

Ich habe urlencode(), rawurlencode(), htmlspecialchar() ausprobiert und das Zeichensatz meiner Seite ist auf UTF-8 eingestellt.

Ich muss unbedingt die Akzente im Dateinamen behalten. Hat jemand eine Idee?

2voto

STW Punkte 42452

Ein praktischer Workaround für den Umgang mit schwierigen Zeichen in URLs besteht darin, ihre Prozentkodierten Werte zu verwenden. In diesem Fall müssten Sie meiner Meinung nach %C3%89 anstelle von É übergeben, ganz wie das Übergeben eines %20 anstelle eines Leerzeichens.

Versuchen Sie es also damit:

FORMULAIRE%20-%20ENVOI%20DE%20MESSAGE%20PAR%20T%C3%89L%C3%89COPIEUR.doc

Es hört sich so an, als ob Sie einen Mac verwenden, aber wenn Sie Zugang zu einem Windows-Rechner haben (virtuelle Maschine oder anderweitig), ist Fiddler ein großartiges Schweizer Taschenmesser für alles rund um HTTP, und dessen Menü umfasst einen "Text Wizard", der bei der Textkodierung/-dekodierung helfen kann.

0voto

V-X Punkte 2979

Es ist möglich, dass die Seite in Ihrer lokalen Codierung vorliegt und Safari einen Fehler aufweist. Sie müssen dem Webbrowser helfen, indem Sie die URL-Codierung verwenden, die anscheinend in PHP nicht korrekt funktioniert. Sie müssen diese Zeichen manuell ersetzen. Dies hängt von Ihrer Lokalisierung ab (es scheint französisch oder so ähnlich zu sein). Sehen Sie sich die strtr-Funktion in PHP an und verwenden Sie eine assoziative Array von den Zeichen in Ihrer Lokalisierung zur Darstellung als %xx/%xx%xx... Das ist das einzige, was Sie tun können (außer UTF anstelle der französischen Codierung zu verwenden).

0voto

xiaoboa Punkte 1943

Nur das gleiche Problem mit Safari erlebt, wir haben festgestellt, dass die Wurzel des Problems mit der Unicode-Normalisierungsform zusammenhängt

  • In Safari wird die NFC-Normalisierungsform verwendet, daher wird E auf den Codepunkt: 0019 normalisiert

  • während Chrome die NFD-Normalisierungsform verwendet, daher wird E auf 2 Codepunkte normalisiert: 0045, 0301

Ein weiteres Beispiel aus Wiki Bildbeschreibung hier eingeben

Um mit diesem Problem umzugehen, muss der Server die Zeichen in derselben Unicode-Normalisierungsform behalten, bevor sie verwendet werden. Es ist besser, diese Zeichen in URLs zu vermeiden

-1voto

Ryan Punkte 3544

Sie können keine Sonderzeichen in einer URL haben. Nur ASCII-Zeichen sind erlaubt. Weitere Informationen finden Sie unter https://www.rfc-editor.org/rfc/rfc3986#section-2

Es ist möglich, URLs umzuschreiben, um Sonderzeichen zu verarbeiten, leider bin ich nicht mit URL-Umschreibung vertraut, daher kann ich das nicht für Sie bereitstellen - aber es ist möglich.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X