Czy powinienem używać znaków akcentowanych w adresach URL?

Gdy tworzy się treści internetowe w językach innych niż Angielski, pojawia się problem zoptymalizowanych pod kątem wyszukiwarek i przyjaznych dla użytkownika adresów URL.

Zastanawiam się, czy jest to najlepsza praktyka, aby używać de - akcentowane litery w Urlach -- ryzykując, że niektóre słowa mają zupełnie inne znaczenia z i bez pewnych akcentów -- czy lepiej trzymać się użycia znaków nie-Angielski, gdzie stosowne poświęcając czytelność tych adresów URL w mniej zaawansowanych środowiskach (np. MSIE, view source).

"egzotyczne" litery mogą pojawić się wszędzie: w tytułach dokumentów, w tagach, w nazwach użytkowników itp., więc nie zawsze są pod pełnym nadzorem opiekuna strony.

Możliwym podejściem byłoby oczywiście ustawienie alternatywnych -- unaccented -- Urli, które wskazywałyby na pierwotne miejsce docelowe, ale chciałbym poznać Wasze opinie na temat używania akcentowanych adresów URL jako podstawowych identyfikatorów dokumentów .

Author: Wabbitseason, 2009-09-06

5 answers

W obliczu podobnego problemu skorzystałem z przepisywania URL , aby umożliwić dostęp do takich stron za pomocą znaku akcentowanego lub nieakcentowanego. Rzeczywisty adres URL byłby czymś w rodzaju

http://www.mysite.com/myresume.html

I funkcja przepisywania + tłumaczenia znaków pozwala na to odniesienie

http://www.mysite.com/myresumé.html

Aby załadować ten sam zasób. Aby odpowiedzieć na twoje pytanie, jako podstawowy identyfikator zasobu , ograniczam się do 0-9, A-Z, a - Z i sporadycznych myślników.

 11
Author: Bob Kaufman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-06 18:09:00

Nie ma tu dwuznaczności: RFC3986 mówi nie , to znaczy, URI nie może zawierać znaków unicode, tylko ASCII.

Zupełnie inną sprawą jest sposób, w jaki przeglądarki reprezentują zakodowane znaki podczas wyświetlania URI, na przykład niektóre przeglądarki będą wyświetlać spację w adresie URL zamiast '%20'. Tak działa również IDN: ciągi punycoded są kodowane i dekodowane przez przeglądarki w locie, więc jeśli odwiedzisz café.com, you ' re really visiting xn--caf-dma.com. co wydaje się być znakami unicode w Adresy URL to tak naprawdę tylko "wizualny cukier" ze strony przeglądarki: jeśli używasz przeglądarki, która nie obsługuje IDN lub unicode, zakodowana wersja nie będzie działać, ponieważ podstawowa definicja adresów URL po prostu jej nie obsługuje, więc aby działała konsekwentnie, musisz % kodować.

 25
Author: Synchro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-15 12:24:15

Biorąc pod uwagę adresy URL z akcentami często wyglądają tak:

http://fr.wikipedia.org/wiki/%C3%89l%C3%A9phant

...co nie jest takie miłe... Myślę, że jeszcze przez jakiś czas będziemy używać de-akcentowanych adresów URL.

Jednak powinno być lepiej, ponieważ akcentowane adresy URL są teraz akceptowane przez przeglądarki internetowe, jak się wydaje.

Firefox 3.5, którego obecnie używam, wyświetla adres URL w przyjemny sposób, a nie z %stuff, btw ; wydaje się to być "nowe" od Firefoksa 3.0 (zobacz Firefox 3: obsługa UTF-8 w pasku lokalizacji ) ; tak więc, przynajmniej nie jest to obsługiwane w IE 6 -- i nadal jest zbyt wiele osób korzystających z tego: - (


Może URL bez akcentu nie wygląda najlepiej, jak to możliwe ; ale mimo to ludzie są do nich przyzwyczajeni i wydają się ogólnie rozumieć je całkiem dobrze.

 9
Author: Pascal MARTIN,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-06 18:05:56

Należy unikać znaków innych niż ASCII w adresach URL, które mogą być wprowadzane ręcznie przez użytkowników w przeglądarce. Jest ok dla osadzonych linków wstępnie zakodowanych przez serwer.

Dowiedzieliśmy się, że przeglądarka może kodować adres URL na różne sposoby i bardzo trudno jest dowiedzieć się, jakiego kodowania używa. Zobacz moje pytanie na ten temat,

Obsługa kodowania znaków w URI na Tomcat

 5
Author: ZZ Coder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:46:25

Istnieje kilka obszarów w pełnym adresie URL, a każdy z nich może mieć inne reguły. Protokół jest zwykły ASCII. Wpis DNS jest regulowany przez reguły IDN (International Domain Names) i może zawierać (większość) znaków Unicode. Ścieżka (po pierwszym/), nazwa użytkownika i hasło mogą być ponownie wszystkim. Są one unikane (jako %XX), ale są to tylko bajty. Co to jest kodowanie tych bajtów jest trudne do poznania (jest interpretowane przez serwer http). Część parametrów (po najpierw ?) jest przekazywane "tak jak jest" (po % XX unescapeing) do jakiejś aplikacji po stronie serwera (php, asp, jsp, cgi) , a jak to interpretuje bajty to inna historia). Zaleca się, aby ścieżka/użytkownik/hasło/argumenty były utf-8, ale nie są obowiązkowe i nie wszyscy to respektują.

Więc zdecydowanie powinieneś pozwolić na nie-ASCII (nie jesteśmy już w latach 80-tych), ale dokładnie to, co robisz z tym może być trudne. Spróbuj użyć Unicode i trzymaj się z dala od starszych stron kodu, oznacz treść z odpowiednim kodowaniem / charsetem, jeśli możesz (użycie meta w html, dyrektywy językowe dla asp / jsp, itp.)

 2
Author: Mihai Nita,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-25 21:29:19