Würden Sie 2010 URLs mit UTF-8-Zeichen in einem großen Webportal bereitstellen?
Unicode-Zeichen sind gemäß RFC für URLs verboten (siehe hier ). Sie müssten prozentual codiert sein, um standardkonform zu sein.
Mein Hauptpunkt ist jedoch, die nicht codierten Zeichen nur für gut aussehende URLs bereitzustellen, sodass die prozentuale Codierung nicht funktioniert.
Alle gängigen Browser scheinen diese URLs zu analysieren, egal was der RFC sagt. Mein allgemeiner Eindruck ist jedoch, dass es beim Verlassen der Domäne von Webbrowsern sehr wackelig wird:
- URLs werden kopiert und in Textdateien, E-Mails und sogar Websites mit einer anderen Codierung eingefügt
- HTTP-Client-Bibliotheken
- Exotische Browser, RSS-Reader
Ist mein Eindruck richtig, dass hier Probleme zu erwarten sind, und daher ist es (noch) keine praktische Lösung, wenn Sie ein nicht technisches Publikum bedienen und es wichtig ist, dass alle Ihre Links ordnungsgemäß funktionieren, auch wenn sie zitiert und weitergegeben werden?
Gibt es eine magische Möglichkeit, gut aussehende URLs in HTML bereitzustellen?
http://www.example.com/düsseldorf?neighbourhood=Lörick
das kann mit intakten Sonderzeichen kopiert + eingefügt werden, funktioniert aber korrekt, wenn es in älteren Clients wiederverwendet wird?
Antworten:
Verwenden Sie die prozentuale Codierung. Moderne Browser kümmern sich um Probleme beim Anzeigen und Einfügen und machen sie für den Menschen lesbar. Z.B. http://ko.wikipedia.org/wiki/ 위키 백과: 대문
Bearbeiten: Wenn Sie eine solche URL in Firefox kopieren, enthält die Zwischenablage das prozentual codierte Formular (was normalerweise eine gute Sache ist). Wenn Sie jedoch nur einen Teil davon kopieren, bleibt es nicht codiert.
quelle
GET /images/logo.png HTTP/1.1
? Codieren sie die URL immer in Prozent?Was Tgr gesagt hat. Hintergrund:
Das ist keine URI. Aber es ist ein IRI .
Sie können keine IRI in ein HTML4-Dokument aufnehmen. Die Art der Attribute wie
href
ist als URI und nicht als IRI definiert. Einige Browser verarbeiten hier sowieso eine IRI, aber das ist keine gute Idee.Um eine IRI in eine URI zu codieren, nehmen Sie den Pfad und die Abfrageteile, UTF-8-codieren Sie sie und codieren Sie dann die Nicht-ASCII-Bytes in Prozent:
Wenn der Hostname-Teil der IRI Nicht-ASCII-Zeichen enthält, z.
http://例え.テスト/
wurden sie stattdessen mit Punycode codiert .Jetzt haben Sie eine URI. Es ist eine hässliche URI. Die meisten Browser verbergen dies jedoch für Sie: Kopieren Sie es und fügen Sie es in die Adressleiste ein oder folgen Sie ihm in einem Link, und es wird mit den ursprünglichen Unicode-Zeichen angezeigt. Wikipedia nutzt dies seit Jahren, z.
Der einzige Browser, dessen Verhalten unvorhersehbar ist und nicht immer die hübsche IRI-Version anzeigt, ist ...
...und Sie wissen.
quelle
Abhängig von Ihrem URL-Schema können Sie den UTF-8-codierten Teil "nicht wichtig" machen. Wenn Sie sich beispielsweise Stapelüberlauf-URLs ansehen, haben sie die folgende Form:
Dem Server ist es jedoch eigentlich egal, ob Sie das Teil nach der falschen Kennung erhalten, daher funktioniert dies auch:
Wenn Sie also ein Layout wie dieses hätten, könnten Sie möglicherweise UTF-8 in dem Teil nach dem Bezeichner verwenden, und es wäre nicht wirklich wichtig, wenn es verstümmelt würde. Natürlich funktioniert das wahrscheinlich nur unter etwas speziellen Umständen ...
quelle
Ich bin mir nicht sicher, ob es eine gute Idee ist, aber wie in anderen Kommentaren erwähnt und wie ich es interpretiere, sind viele Unicode-Zeichen in HTML5-URLs gültig .
ZB
href
docs sagen http://www.w3.org/TR/html5/links.html#attr-hyperlink-href :Dann verweist die Definition der "gültigen URL" auf http://url.spec.whatwg.org/ , wodurch URL-Codepunkte wie folgt definiert werden :
Der Begriff "URL-Codepunkte" wird dann in einigen Teilen des Parsing-Algorithmus verwendet, z. B. für den relativen Pfadstatus :
Auch der Validator http://validator.w3.org/ gilt für URLs wie
"你好"
und nicht für URLs mit Zeichen wie Leerzeichen"a b"
Verwandte: Welche Zeichen machen eine URL ungültig?
quelle
"你好"
und"a b"
) müssen prozentual codiert sein, wenn die HTTP-Anfrage gestellt wird, oder?"a b"
Ich bin mir ziemlich sicher, ja, da Platz nicht in der Liste der erlaubten erlaubt ist. Denn"你好"
es ist definitiv die bessere Idee, Prozent zu codieren, aber ich weiß nicht, ob es nur um "die Implementierungen sind nicht gut genug" oder um den "Standard sagt es" geht. Der HTML-Standard scheint diese Zeichen zuzulassen. Aber ich denke, dies wird durch den HTTP-Standard festgelegt, nicht durch HTML. Siehe auch: stackoverflow.com/questions/912811/…Da alle diese Kommentare zutreffen, sollten Sie beachten, dass alle Browserhersteller (Microsoft, Mozilla, Apple usw.) , sofern ICANN arabische (persische) und chinesische Zeichen als Domain-Namen zugelassen hat, dies tun müssen unterstützt Unicode in URLs ohne Codierung, und diese sollten von Google usw. durchsuchbar sein.
Dieses Problem wird also so schnell wie möglich behoben.
quelle
Verwenden Sie eine prozentual codierte Form . Einige (hauptsächlich alte) Computer unter Windows XP unterstützen beispielsweise keinen Unicode, sondern ISO-Codierungen. Aus diesem Grund wurden prozentual codierte URLs erfunden. Wenn Sie einem Benutzer eine auf Papier gedruckte URL geben, die Zeichen enthält, die nicht einfach eingegeben werden können, kann es für diesen Benutzer schwierig sein, sie einzugeben (oder sie einfach zu ignorieren). Prozentcodierte Form kann sogar in vielen der ältesten Maschinen verwendet werden, die jemals existierten (obwohl sie das Internet natürlich nicht unterstützen).
Es gibt jedoch einen Nachteil, da prozentual codierte Zeichen länger sind als die ursprünglichen, was möglicherweise zu sehr langen URLs führt. Aber versuchen Sie es einfach zu ignorieren oder verwenden Sie einen URL- Shortener (ich würde in diesem Fall goo.gl empfehlen , wodurch eine 13 Zeichen lange URL entsteht). Wenn Sie sich nicht für ein Google-Konto registrieren möchten, versuchen Sie es mit bit.ly (bit.ly erstellt etwas längere URLs mit einer Länge von 14 Zeichen).
quelle
Für mich ist das der richtige Weg. Das hat einfach funktioniert:
Dies hat funktioniert und jetzt werden die Links richtig angezeigt:
http://newspaper.annahar.com/article/121638 -معرض - جوزف-حرب-في-غاليري-جانين-ربيز-لوحاته-الجدية-تبحث-وتكتشف-وتفرض-الاحترام
Link gefunden am:
http://www.galeriejaninerubeiz.com/newsite/news
quelle