2008-10-16 7 views
0

Comment formater des URL avec des caractères spéciaux/internationaux?Réécriture d'URL - lettres internationales

Actuellement, j'essaie de faire des URL « bien paraître », de sorte que: est un test

www.myhost.com/this, ne savez-vous comment?

est converti en:

www.myhost.com/this_is_a_test_do_you_know_how

Je sais que certaines lettres internationales pourraient être converties (ü = ue, æ = ae, a = aa), certains caractères peuvent être enlevés . En général, j'essaie de rendre l'URL "bonne", mais est-ce stupide? Mais qu'est-ce que je fais avec les lettres chinoises, japonaises et arabes qui n'a rien à voir avec notre format ASCII occidental?

Je n'aime vraiment pas l'idée de réécrire l'URL avec des codes hexadécimaux, donc maintenant je n'utilise que mon ID unique interne si l'URL contient trop de caractères "non convertissables".

Répondre

1

Quelle langue utilisez-vous? PHP inclut une fonction filter_var() qui semble faire la plupart de ce que vous voulez. Voir http://us.php.net/manual/en/function.filter-var.php.

En général, le coût de création de chaînes ASCII lisibles par l'utilisateur à partir d'une entrée de chaîne arbitraire est probablement trop élevé pour en valoir la peine. Si l'utilisateur vous donne un hanzi chinois, qu'allez-vous faire? Rechercher dans un dictionnaire et afficher le résultat en pinyin?

La solution la meilleure et la plus générale consiste simplement à prendre l'entrée, à la formater en UTF-8, puis à encoder le résultat. Cela rendra le texte non latin illisible, mais il n'y a pas de bonne solution générale pour ces langues de toute façon. La langue que vous utilisez a presque certainement des fonctions de bibliothèque qui peuvent rendre cela facile.

+0

bien en utilisant asp.net. –

0

Mais Google ne tire-t-il pas parti de l'URL? Si une partie du texte d'un article donné est dans l'URL, le moteur de recherche Google l'utilisera? Mais s'il n'y a vraiment pas de façon cool de gérer les lettres non-ascii, alors ces langues sont moins prioritaires sur le "google-internet"?

0

Regardez, par exemple, http://ja.wikipedia.org/. Si vous passez la souris sur les liens, ils apparaissent dans la barre d'état en tant que caractères japonais. Ne semble pas si japonais dans la barre d'adresse lorsque vous suivez le lien, mais cela ne peut éventuellement pas être aidé. Je n'ai pas vérifié, mais je suppose que tout est utf8 codé en hexadécimal.

+0

Oui, c'est possible, mais à mon avis une idée très * BAD *. Je l'ai parfois rencontré et tu sais quoi? J'ai eu des problèmes parce que je n'avais pas le «bon» clavier sur l'ordinateur que j'utilisais à ce moment-là! – Davide

+0

Je ne sais pas si je comprends.Quels problèmes avez-vous eu, et quel effet a eu le clavier? Ma compréhension est que le texte html est écrit entièrement en caractères ASCII, et le navigateur interprète et restitue les caractères non-ASCII encodés s'il le peut, donc le clavier ne doit pas entrer dedans. –

+0

ouais, le ja. site fonctionne uniquement avec les lettres japonaises, sans se soucier des lettres ascii. –

0

si vous utilisez .NET avec pas

Server.URLEncode(myURL); 

mais si vous voulez utiliser les caractères ou quel que soit scandinavie omble chevalier que vous voulez, il vous suffit de mettre en place la règle dans votre URL composant Réécriture parce DynamicWeb CMS logiciel utilise l'ensemble des caractères disponibles, seulement remplacer les espaces par des underscores ('_')

comme cette url:

http://www.gynækologen.dk/Undersøgelser_og_behandlinger.aspx

vous pouvez voir le æ dans le domai n ainsi le ø dans le nom de la page

+0

oui, j'ai pensé à ce sujet, mais encore une fois, vous ne pouvez pas coller l'URL dans un site qui supporte le dosent. Comme : http://validator.w3.org/check?uri=http%3A%2F%2Fwww.gyn%C3%A6kologen.dk%2FUnders%25C3%25B8gelser_og_behandlinger.aspx Et bonjour à vous balexandre , Je suis danois aussi :) –

+0

ahh semble comme c'est juste le nom d'hôte –

+0

nom normal: http://www.gynaekologen.dk ;-) – balexandre