Question

Après avoir étudié un peu les différentes manières dont les gens slugifient les titres, j'ai remarqué qu'il manquait souvent des solutions pour traiter les titres non anglais.

le codage d’URL est très restrictif. Voir http://www.blooberry.com/indexdot/html/topics/urlencoding .htm

Ainsi, par exemple, comment les gens traitent-ils les slug du titre pour des choses comme

&> Una l & # 225; grima cay & # 243; en la Arena & ";

On peut trouver un tableau raisonnable pour les langues indoeuropéennes, c'est-à-dire. choses qui peuvent être encodées via ISO-8859-1. Par exemple, une table de conversion traduirait '& # 225;' = > 'a', donc la limace serait

& "Una-lagrima-cayo-en-la-arena" & ";

Cependant, j'utilise unicode (en particulier en utilisant le codage UTF-8), donc aucune garantie sur les points de code de tri que je vais obtenir (je dois me préparer à des choses qui ne peuvent pas être ISO-8859- 1 codé.

Je suis un nushell. Comment faire avec cela? Dois-je créer une table de conversion pour les caractères de la plage ISO_8859-1 (& Lt; 255) et abandonner tout le reste?

MODIFIER : pour vous donner un contexte un peu plus a priori, je ne m'attends pas vraiment à slugifier les données dans des langues non indo européennes, mais j'aimerais avoir un plan si je rencontre un tel problème. Les données. Une table de conversion pour l'ASCII étendu serait bien. Des pointeurs?

De plus, comme les gens me le demandent, j'utilise python et tourne sous Google App Engine

.
Était-ce utile?

La solution

Un tableau presque complet de translittération (pour les jeux de caractères latins, grecs et cyrilliques) est disponible dans bibliothèque slughifi . Il est adapté à Django, mais peut être facilement modifié pour répondre aux besoins généraux (je l’utilise avec l’application Werkzeug sur AppEngine).

Autres conseils

J'utilise simplement utf-8 pour les chemins d'URL. Tant que le domaine est non-IDN FF3, IE fonctionne bien avec cela. Google les lit et les affiche correctement. La IRI RFC autorise Unicode. Assurez-vous d’analyser correctement les URL entrantes.

En général, cela dépendra de la langue que vous souhaitez obtenir. Si votre base d'utilisateurs principale est le japonais, il est peu probable que tout ce que vous supprimez, à l'exception des caractères ISO-8859-1, fonctionne correctement.

Cela dit, une option pourrait consister à utiliser le mode de translittération si votre bibliothèque de conversion de jeux de caractères le prend en charge. Par exemple, avec GNU iconv, on peut faire:

] echo Una lágrima cayó en la arena|iconv -f utf8 -t ascii//TRANSLIT
Una lagrima cayo en la arena

Comme vous pouvez le constater, les caractères accentués ont été automatiquement convertis en éléments de la plage ASCII. La traduction de ce code en code dépendra bien sûr de la langue que vous utilisez, mais si votre langue est basée sur GNU iconv pour la conversion de jeux de caractères (et si c’est sur linux, c’est probablement le cas), cette astuce peut probablement être appliquée directement par en spécifiant simplement & "; ascii // TRANSLIT &"; en tant que jeu de caractères converti,

Une chose à noter avec ceci, cependant, est que cela n’est efficace que pour les caractères qui & "ressemblent à &"; quelque chose en ASCII. Par exemple:

] echo 我輩は猫である。名前はまだない。|iconv -f utf8 -t ascii//TRANSLIT                                               
????????????????

Comme vous pouvez le constater, le japonais n’a pas beaucoup d’aide et nécessite un traitement ultérieur pour supprimer les caractères ne convenant pas aux URL.

Si tout échoue, vous pouvez utiliser une table de conversion, mais une solution plus performante est peut-être disponible. Quelle langue côté serveur utilisez-vous?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top