Manual:PAGENAMEE encoding/fr
L'encodage du nom des pages MediaWiki est un sujet difficile. Les mots magiques de MediaWiki PAGENAME, PAGENAMEE, urlencode ont des implémentations distinctes, chacun ayant ses propres particularités.
Un nom de page MediaWiki peut avoir une espace au début mais pas à la fin. Les caractères ASCII qui ne sont pas autorisés dans les noms de pages MediaWiki sont les trois types de parenthèses, le croisillon, le catactère de soulignement et la barre verticale, ainsi que tous les caractères de contrôle (y compris les onglets et les nouvelles lignes).
#
<
>
[
]
_
{
|
}
Dans cet article nous les appellerons les « caractères non autorisés dans les noms de page ». Pour clarifier nous présenterons les autres valeurs ASCII de 7 bits des caractères dans le style de l'encodage URL, en utilisant le format pourcent-hexa-hexa connu comme l'encodage pourcent.
PAGENAME
Certains caractères autorisés renvoyés par {{PAGENAME}}
sont encodés dans le style HTML :
"
(guillemets%22
) est converti en"
(34 est la valeur décimale de l'hexadecimal 22); dans le style HTML/XML standard, il pourrait également être converti en"
.&
(et commercial%26
) est converti en&
(38 est la valeur décimale de l'hexadecimal 26); dans le style HTML/XML standard, il pourrait également être converti en&
'
(apostrophe%27
) est converti en'
(39 est la valeur décimale de l'hexadecimal 27); dans le style HTML/XML standard, il pourrait également être converti en'
- Dans les versions récentes de MediaWiki,
-
est converti en-
si c'est le premier caractère de la chaîne. Voir phab:T358338 pour plus de détails.
- Cet encodage HTML / XML est standard, même si la norme ne nécessite pas toujours d'échapper les apostrophes simples et doubles sauf dans certains cas; la norme exigerait également le recodage des signes inférieur à
<
et supérieur à>
mais ces deux caractères sont interdits dans le nom des pages MediaWiki en raison de la syntaxe du code MediaWiki utilisé pour composer les pages.
Le même encodage HTML est aussi utilisé avec (revoir les définitions sur Mots magiques ) :
{{FULLPAGENAME}}
{{BASEPAGENAME}}
{{SUBPAGENAME}}
{{SUBJECTPAGENAME}}
{{TALKPAGENAME}}
Nous appellerons "
, &
, '
les « trois charactères spéciaux des noms de page ».
PAGENAMEE
{{PAGENAMEE}}
convertit les espaces en caractères de soulignement et encode avec des pourcentages un ensemble de caractères :
- Il convertit les 11 caractères ASCII suivants (tous autorisés dans les noms de page) :
"
%
&
'
+
=
?
\
^
`
~
- en (avec l'utilisation de la représentation hexadécimale de l'encodage ASCII)
%22
%25
%26
%27
%2B
%3D
%3F
%5C
%5E
%60
%7E
- Il convertit également tous les caractères non ASCII (Unicode) ainsi que des triplets de
%nn
avec nn en hexadécimal (un pour chaque octet de la séquence UTF-8 encodant le point de code Unicode associé au caractère), le premier triplet étant entre%C2
et%FD
, suivi de un à trois triplets entre%80
et%BF
(dans le pire des cas, il pourrait générer 12 caractères pour un seul caractère Unicode, la plupart des caractères latins, cyrilliques, grecs étant encodés sur 6 caractères, mais les sinogrammes et le hangul coréen en ont besoin de 9 pour 6 caractères).
- L'espace blanc ASCII (
_
). - Les caractères alphanumériques ASCII ne sont pas convertis, ni les caractères de ponctuation ASCII suivants, ni les symboles (tous étant admis dans les noms de page) :
!
$
(
)
*
,
.
/
:
;
@
_
- Dans les versions récentes de MediaWiki,
-
est converti en-
si c'est le premier caractère de la chaîne. Pour plus de détails, voir phab:T358338.
Le même encodage est utilisé aussi avec :
{{FULLPAGENAMEE}}
{{BASEPAGENAMEE}}
{{SUBPAGENAMEE}}
{{SUBJECTPAGENAMEE}}
{{TALKPAGENAMEE}}
Lors de la préparation d'un nom de page pour l'intégrer dans la "partie recherche" d'une URL (voir RFC 1738 ou RFC 3986), il peut être nécessaire d'avoir à la fois le codage avec les pourcents ainsi que tous les caractères espace convertis %20
et le signe +
que nous appellerons « chiffrage de la partie de recherche ».
- Cela évite le codage problématique des trois caractères de nom de page spéciaux en codant par exemple, le et commercial (
&
) comme%26
, mais le codage typique de la partie de recherche de l'espace est le signe plus (ou parfois%20
).
S'il n'existe pas d'extension qui fasse du traitement de chaîne dans MediaWiki, alors {{PAGENAMEE}}
ne pourrait servir qu'à reconstruire une URL de votre propre wiki vers d'autres wikis ou autres sites où la page qu'ils fournissent a le même nom et utilise les caractères de soulignement (il n'existe pas de standard pour cela, l'encodage qui est présenté dans la table a été défini pour MediaWiki lui-même pour ses propres besoins locaux.
Ne supposez pas que les autres sites vont effectuer la même conversion, la plupart d'entre eux utilisent simplement l'UTF-8 simple pour leurs propres URL locales s'ils doivent représenter des caractères non ASCII et un codage URL standard pour les caractères ASCII qui ne sont pas sûrs).
urlencode
La fonction {{urlencode:data|style}}
(dans sa version actuelle utilisant maintenant le style QUERY
par défaut depuis MediaWiki 1.17) encode avec des pourcents beaucoup plus de caractères que PAGENAMEE.
- Il peut convertir n'importe quelle chaîne valide en entrée à partir de son encodage UTF-8.
- Cette fonction convertira également les 9 caractères interdits dans les noms de pages et répertoriés ci-avant.
- Il convertit les trois caractères spéciaux différemment de ce que fait
{{PAGENAME}}
, en utilisant les triplets hexadécimaux%nn
au lieu des entités HTML. - Il préserve la distinction entre l'espace et le caractère de soulignement (la distinction est perdue uniquement dans le nom des pages MediaWiki).
- Le résultat est conforme à la norme de codage des URL RFC 1738 en utilisant uniquement des lettres, des chiffres et des caractères "sûrs" et les deux caractères
%
(suivis de deux chiffres hexadécimaux) et+
(pour codage des espaces). - Ce résultat est entièrement et facilement réversible, mais MediaWiki ne fournit pas nativement de fonction
urldecode
pour le faire.
Il peut également être utilisé pour permettre à l'éditeur de Wikisource de travailler avec des caractères multilingues auxquels il est habitué plutôt que de traiter les caractères plus opaques codés avec des pourcentages.
Lorsque vous envisagez d'utiliser urlencode
pour construire une URL de lien externe, en particulier dans un modèle, il existe deux styles de conception où cela pourrait être approprié.
Lequel d'entre eux est approprié est une question de compromis entre généralité et facilité d'utilisation.
- Pour une généralité maximale, il n'existe pas de combinaison simple de
PAGENAME
et autres mots magiques par défaut du wiki pour fournir une solution générale et gérer les noms qui incluent tous les caractères possibles dans le nom des pages. Les caractères non autorisés des noms de page et les trois caractères de page spéciaux présentent tous des problèmes. Si un nom souhaité utilise l'un quelconque de ces caractères, le nom de page réel devrait être différent. La conception la plus générale d'un modèle serait un modèle avec deux paramètres : un paramètre de recherche par partie, de style URL pour le lien URL, et un paramètres de style HTML, pour l'étiquette du lien. Le paramètre de style URL serait ajouté à une recherche ou une URL de recherche, et le paramètre HTML serait utilisé pour étiqueter le lien. Par exemple, un modèle appeléOrgName
qui recherche une organisation par son nom avec un nom inhabituel de 10 caractères dea%23b> {c}
appellerait le modèle{{OrgName|a%2523b%3E+%7Bc%7D|a%23b> {c}}}
. Les variantes de ceci peuvent utiliser%20
au lieu de+
dans le paramètre de style URL pour l'espace. - Une autre solution (non liée) utilisée en HTML ou en XML est d'employer
>
au lieu de > pour le caractère supérieur à dans le paramètre de style HTML ou simplement les caractères simples lorsqu'ils fonctionnent correctement. Pour être rigoureux, on pourrait dire qu'avoir deux arguments obligatoires est le meilleur style pour la stabilité à long terme au cas où la page est renommée ou traduite vers un autre wiki où le style de nommage des pages est différent, comme lorsque un alphabet différent est utilisé pour nommer les pages. - La fonction d'analyse syntaxique
urlencode
peut être utilisée pour créer un modèle qui peut être facile à utiliser mais pas parfaitement général. La fonctionurlencode
(dans le style de requête) convertit en séquences hexadécimales de%nn
presque tous les caractères (y compris le pourcentage et autres) sauf les alphanumériques et deux des caractères sûrs de l'URL RFC 1738 :-
.
(le tiret et le point), et convertit l'espace vide en caractère plus (et tous les caractères non ASCII sont encodés en séquences hexadécimales%nn
). - La technique qui consiste à imbriquer des fragments de code
{{urlencode:{{{userparam|{{PAGENAME}}}}}}}
dans un modèle pour créer une URL de lien externe, peut être utile (comme traiter les simples noms de page en tant que données). Un nom de page qui contiendrait l'un des trois caractères spéciaux (renvoyés parPAGENAME
et les fonctions similaires dont le résultat est destiné à être affiché sur une page HTML) pourrait poser problème. Par exemple avec un pagename avec un et-commercial, cela résultera en un et de style HTML (&
) converti par{{URLENCODE|pagename}}
dans le style%26amp%3B
de l'URL de requête que la plupart des sites web distants ne pourraient pas gérer convenablement. Pour les noms avec les caractères problématiques, on peut tout simplement ne pas utiliser le modèle et fournir un lien direct dans le wikicode ou en ajoutant des modèles ou des extensions appropriés au wiki pour prendre en charge les manipulations de chaînes. - Un compromis entre ces deux styles est une variante sur le fragment de code ci-dessus, comme
{{{userparam|{{urlencode:{{PAGENAME}}}}}}}
où leuserparam
est facultatif mais lorsqu'il est fourni explicitement, il doit être codé pour la recherche.
Notez qu'il n'existe pas de fonction d'analyse syntaxique Mediawiki qui puisse décoder avec succès l'encodage HTML réalisé par PAGENAME
.
De même, il n'existe pas de fonction pour décoder l'encodage spécial effectué par PAGENAMEE, ou celui des URL de chemin vers les pages wiki.
Les fonctions d'analyse syntaxique comme #ifeq
ou #ifswitch
fonctionnent car elles comparent les entrées uniquement en les décodant au niveau HTML, mais ne décodent jamais les URL de leurs paramètres.
- Donc, pour comparer les noms de page en toute sécurité partant du résultat de
{{PAGENAME}}
avec un nom statique spécifié contenant l'un des trois caractères spéciaux qui n'a pas été codé HTML (par exemple la valeur d'un paramètre donné à un modèle transclus dans une page wiki), vous pouvez d'abord convertir ce paramètre dans le même codage spécial réalisé parPAGENAME
, en passant cette valeur en tant que paramètre de la fonction d'analyse syntaxique{{PAGENAME|...}}
. - Vous pouvez faire la même chose pour comparer les noms de page en fonction de la valeur de
{{PAGENAMEE}}
, ou vous pouvez utiliser la fonctionurlencode
avec le nom de page{{urlencode|pagename|WIKI}}
comme paramètre supplémentaire de style.
URL du navigateur web et interface HTTP du serveur web du wiki
The URL you type in or cut/paste into your web browser URL is similar but not exactly the same as PAGENAMEE
.
- Pour saisir un nom de page en tant qu'URL dans votre navigateur web qui ira directement à la page, les deux caractères suivants doivent être codés comme dans une URL durant leur saisie :
% ?
comme%25 %3F
. Un exemple typique est un nom de page qui se termine par un point d'interrogation pour lequel les éditeurs de wiki vont créer une redirection wiki sans ce point d'interrogation, afin qu'il soit toujours fonctionnel. Si vous insérez une espace dans une URL, votre navigateur la convertira en%20
avant de l'envoyer, quelque soit le serveur web destinataire. La même chose pour pour ce caractère à double apostrophe"
qui est converti en%22
. Selon votre navigateur, il peut également encoder certains caractères non sûrs, comme%&'`
. Voir RFC 1738 pour plus de détails, mais notez que ce comportement dépend du navigateur. Comparés aux navigateurs qui supportent uniquement http, les navigateurs qui supportent d'autres schémas que celui-ci (tels que ftp) tendent à convertir beaucoup plus de ces caractères. - La manière dont une URL codée avec des pourcents est affichée dans la barre d'adresse d'un navigateur web dépend de la façon dont le serveur web du wiki a utilisé la redirection d'URL. Les caractères de l'ensemble de caractères
PAGENAMEE
seront convertis seulement s'il sont juste à côté d'une espace. Par exemple, si vous tapez une URL dans votre navigateur web qui se termine parA_=_B
ouA=B
, alors elle enverra cette URL directement et vous irez à la page wiki si elle existe. Si vous entrez une URL dans votre navigateur web qui se termine parA = B
(avec des espaces autour du signe égale), alors votre navigateur web encode les espaces en%20
, et envoie ainsiA%20=%20B
au serveur web du wiki. Le serveur web du wiki traduit ensuite la chaîne enA_%3D_B
et la renvoie au navigateur web du wiki via la redirection d'URL. Maintenant vous pouvez voir pourquoi, sur un lien Internet lent, les espaces dans un nom de page se transforment d'abord en%20
et ensuite en caractère de soulignement parce que votre navigateur fait la première conversion et le serveur web du wiki fait la seconde. Vous pouvez essayer de voir l'URL réelle en copiant l'URL dans le navigateur et en la collant textuellement dans un simple éditeur de texte, mais vous pouvez constater que même cette technique produit des résultats qui dépendent du navigateur. - Bien que non spécifique au serveur web du wiki, pour les caractères larges, le navigateur réalise une action
urldecode
partielle sur l'URL réelle. Ce décodage d'URL est essentiel pour pouvoir utiliser les caractères larges dans les URL. Par exemple, pour une URL simple qui se termine par une chaîne UTF-8 codée avec des pourcents comme%E6%9D%B1%E4%BA%AC
, votre navigateur va généralementurldecode
cette partie et l'afficher comme東京
(Unicode U+6771 U+5EAC), qui sont les deux caractères Kanji pour Tokyo. Ce résultat s'applique à la fois aux caractères 7-bits et aux caractères larges, mais il dépend du navigateur. Par exemple, si vous visitez le nom de la page à huit caractères deA!*-. ~A
commehttp://en.wikipedia.org/wiki/A%21%2A%2D%2E%5F%7EA
vous pouvez constater que votre navigateur web affiche alors une URL qui n'a pas de décodage, que certains ou tous les caractères codés avec les pourcentage et que le copier-coller de l'URL du navigateur dans un texte simple ne comprendra aucun, certains, ou tous les caractères décodés. La quantité de l'URL décodée pendant un copier-coller dépend du navigateur.
Comparaison des encodages
Le tableau suivant montre l'effet des différents encodages pris en charge sur l'ensemble complet des caractères ASCII imprimables (plus l'espace) et sur les deux premiers caractères Unicode imprimables après ASCII. Les caractères de tabulation et autres contrôles d'espace sont discutés plus complètement dans la section ci-dessous sur les espaces blancs, mais le tableau montre certains effets contextuels qui se produisent avec des espaces éventuellement ignorés et certains autres caractères.
Caractère →
↓Encodage
\
|
09AZ- |
az |
. . |
! |
" |
# |
$ |
% |
& |
' |
( |
) |
* |
+ |
, |
... |
/ |
.: |
; |
< |
= |
> |
? |
@ |
[ |
\ |
] |
^ |
_ |
` |
{ |
| |
} |
~ |
|
¡ |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
{{PAGENAME:...}} |
09AZ- |
Az |
. . |
! |
" |
|
$ |
% |
& |
' |
( |
) |
* |
+ |
, |
... |
/ |
.: |
; |
|
= |
|
? |
@ |
|
\ |
|
^ |
|
` |
|
|
|
~ |
|
¡ |
{{PAGENAMEE:...}} |
09AZ- |
Az |
._. |
! |
%22 |
|
$ |
%25 |
%26 |
%27 |
( |
) |
* |
%2B |
, |
... |
/ |
.: |
; |
|
%3D |
|
%3F |
@ |
|
%5C |
|
%5E |
|
%60 |
|
|
|
~ |
|
%C2%A1 |
{{urlencode:...|WIKI}} |
09AZ- |
az |
._. |
! |
%22 |
%23 |
$ |
%25 |
%26 |
%27 |
( |
) |
* |
%2B |
, |
... |
/ |
.: |
; |
%3C |
%3D |
%3E |
%3F |
@ |
%5B |
%5C |
%5D |
%5E |
_ |
%60 |
%7B |
%7C |
%7D |
~ |
%C2%A0 |
%C2%A1 |
{{urlencode:...|PATH}} |
09AZ- |
az |
.%20. |
%21 |
%22 |
%23 |
%24 |
%25 |
%26 |
%27 |
%28 |
%29 |
%2A |
%2B |
%2C |
... |
%2F |
.%3A |
%3B |
%3C |
%3D |
%3E |
%3F |
%40 |
%5B |
%5C |
%5D |
%5E |
_ |
%60 |
%7B |
%7C |
%7D |
~ |
%C2%A0 |
%C2%A1 |
{{urlencode:...|QUERY}} |
09AZ- |
az |
.+. |
%21 |
%22 |
%23 |
%24 |
%25 |
%26 |
%27 |
%28 |
%29 |
%2A |
%2B |
%2C |
... |
%2F |
.%3A |
%3B |
%3C |
%3D |
%3E |
%3F |
%40 |
%5B |
%5C |
%5D |
%5E |
_ |
%60 |
%7B |
%7C |
%7D |
%7E |
%C2%A0 |
%C2%A1 |
{{anchorencode:...}} |
09AZ- |
az |
._. |
! |
" |
# |
$ |
% |
& |
' |
( |
) |
* |
+ |
, |
... |
/ |
.: |
; |
< |
= |
> |
? |
@ |
[ |
\ |
] |
^ |
|
` |
{ |
| |
} |
~ |
|
¡ |
Avec les différents encodages proposés dans MediaWiki, il est remarquable que les seuls caractères qui ne sont jamais transformés (ou supprimés) sont les 10 chiffres décimaux, le tiret du moins (-
) et les lettres latines majuscules de base (A-Z
: une lettre majuscule initiale peut être transformée par capitalisation dans la plupart des wikis sauf ceux qui conservent la distinction de cas dans les noms de pages).
Notez également que les noms d'espaces de noms et les préfixes interwiki n'ont pas de lettres significatives pour le cas, et si elles sont reconnues au début d'un titre, elles peuvent être remplacées par un terme incomplètement non lié, éventuellement dans une autre langue et (ou) un script !
Soyez donc prudent avec tout ce qui vient avant un caractère deux-points (:
) car le comportement sera spécifique pour chaque wiki et leur propre ensemble local de noms d'espaces de noms reconnus (ou synonymes) et de préfixes interwiki (mais ces préfixes locaux n'affectent pas ce que urlencode
et anchorencode
vont renvoyer, ce qui est indépendant des règles de nommage local pour chaque wiki).
Les deux styles PATH
et QUERY
pour urlencode
sont presque identiques, leur seule différence est que :
- le style
PATH
conserve le tilde (~
) mais encode les espaces avec la notation hexadécimale et les pourcentages (%20
). Il n'est pas utilisé dans les URL web, mais uniquement pour les chemins des fichiers locaux, pour une utilisation avec des shell de style Unix (sans avoir besoin de signes d'échappement ou de guillemets supplémentaires). Il ne sert pas pour les URL qui utilisent le schéma d'URI[1]file:
.[1] - le style
QUERY
encode le tilde (~
) mais encode les espaces différemment avec un signe plus (+
). Il est utilisé dans les chemins des URL web pour une meilleure compatibilité avec les utilisations web courantes. Depuis la version 1.17 de MediaWiki, c'est le style d'encodage par défaut utilisé parurlencode
si vous ne spécifiez aucun style, ou si vous donnez un style inconnu ou vide. - Le style
WIKI
était le style par défaut dans MediaWiki avant la version 1.17; il a malheureusement laissé de côté certains caractères principaux — l'astérisque (*
), les deux-points (:
), ou le point-virgule (;
) — causant des problèmes lors de son utilisation pour passer des valeurs dans les paramètres de requête à une API web distante. N'utilisez pas ce style sauf pour la compatibilité avec les anciens modèles en fonction de leur principe pour détecter ces trois caractères.
Caractères particuliers dans le nom des pages
Majuscules dans le nom des pages
Les lettres minuscules (a-z
) sont conservées, sauf à la première position où elles peuvent être converties en majuscule avec PAGENAME
et PAGENAMEE
sur les wikis qui n'ont pas désactivé cette mise en majuscule.
Vous trouverez un exemple de la mise en majuscule dans la table.
Deux-points dans le nom des pages
Le deux-points (:
) est traité spécialement dans les noms de pages lorsqu'il s'agit du premier caractère du nom élagué donné[2] (où il sera lié à une page de description au lieu d'afficher le contenu de cette page lorsqu'il représente l'un des espaces de noms spéciaux tels que File, Image ou Int).
Mais PAGENAME
va ignorer ces deux-points initiaux ainsi que toutes les espaces présentes juste après :
{{PAGENAME: : Example }}
→Example
{{NAMESPACE: : Example }}
→(une chaîne vide, qui représente l'espace de noms principal du wiki)
Sinon, si le texte non vide avant le premier deux-points correspond à un espace de noms local connu, cet espace de noms et le deux-points seront abandonnés, ainsi que les espaces qui suivent immédiatement après ces deux-points (l'espace de noms abandonnés sera coupé[2] et renvoyé par {{NAMESPACE:...}}
) :
{{PAGENAME: File : Example }}
→Example
{{NAMESPACE: File : Example }}
→File
Sinon, si le texte non vide avant le premier deux-points correspondait à un préfixe interwiki connu, alors ce préfixe et ce deux-points sont abandonnés, ainsi que des espaces qui suivent immédiatement ce deux-points, mais un espace de noms vide sera renvoyé :
{{PAGENAME: mw:Example }}
→Example
{{NAMESPACE: mw:Example }}
→
{{PAGENAME: mw: Example }}
→Example
{{NAMESPACE: mw: Example }}
→
{{PAGENAME: w:fr:Example }}
→fr:Example
{{NAMESPACE: w:fr:Example }}
→
{{PAGENAME: w: fr: Example }}
→fr: Example
{{NAMESPACE: w: fr: Example }}
→
{{PAGENAME: m: w: fr: Example }}
→w: fr: Example
{{NAMESPACE: m: w: fr: Example }}
→
{{PAGENAME: m : w : fr : Example }}
→w : fr : Example
{{NAMESPACE: m : w : fr : Example }}
→
Sinon, les deux-points sont conservés, même le texte avant que le premier deux-points puisse être un préfixe interwiki valide (contenant uniquement des lettres sans distinction de cas, ou des chiffres, ou des moins et des tirets, des espaces ou des caractères de soulignement; non limité à être uniquement du ASCII) :
{{PAGENAME: Unknown : Example}}
→Unknown : Example
{{NAMESPACE: Unknown : Example}}
→
Les mêmes règles sont appliquées par {{PAGENAMEE:...}}
et {{NAMESPACEE:...}}
avant qu'ils n'encodent leur valeur de retour.
Les caractères deux-points (avec les espaces qui les entourent, tant qu'ils ne se trouvent pas au début, ni à la fin de la chaîne) ne sont pas modifiés par {{FULLPAGENAME:...}}
.
Tous les deux-points ne sont pas modifiés à l'encodage de l'URL. Mais la plupart (pas tous) des deux-points sont préservés dans l'encodage des ancres.
Caractères d'arrêt et barres obliques dans le nom des pages
Notez que les noms des pages sont découpés de gauche à droite en segments (éventuellement vides) (appelés parties du titre) séparées par des barres obliques (/
).
Dans certains cas l'occurence de segments contenant seulement un seul point (ou un point d'arrêt .
) ou deux points (..
), fera que le reste de la chaîne sera transformé.
Voir Help:Extension:ParserFunctions pour les détails.
Sinon les points sont laissés inchangés par {{urlencode:...}}
et {{anchorencode:...}}
, mais les barres obliques (slash) peuvent être converties.
Aussi, deux barres obliques consécutives (//
) ne sont pas acceptées dans le nom des pages, en fonction de la configuration du wiki.
Habituellement, cela indique que le nom est une URL, lorsqu'il est précédé d'un schéma URI[1] valide (ou d'aucun schéma d'URI du tout ce qui signifie qu'un schème URI par défaut http:
ou https:
sera utilisé en fonction des préférences utilisateur).
Un schéma d'URI doit alors contenir un deux-points (:
), mais MediaWiki ne reconnaît actuellement que des schémas d'URI où le deux-points est à la fin dans une liste restreinte; sinon.
Par exemple sur ce wiki,
"{{PAGENAME|//www.mediawiki.org/}}"
→"//www.mediawiki.org/"
Sur les sites Wikimedia, comme MediaWiki.org, les barres obliques doubles sont reconnues comme des URIs, et la plupart des URIs valides sont interdites comme noms de page (si un schéma d'URI est présent, il pourrait être reconnu comme un espace de noms s'il a été configuré, sinon le nom de la page sera cherché dans l'espace de noms principal du wiki) :
- La création de lien vers ces noms de page de type URI utilise :
[[page name in double brackets|with optional displayed text]]
- Mais les liens vers les cibles effectives de l'URI peuvent utiliser soit :
[URL-without-spaces-in-single-brackets with optional displayed text]
- URI-sans-espace (également affiché tel quel, mais le lien sera activé conditionnellement car il est sujet aux restrictions des schémas d'URI reconnus).
Donc sur ce wiki de MediaWiki.org, le code suivant crée de manière inattendue un lien direct vers l'URL externe, entouré de simples crochets :
Les URI ne sont pas reconnus par l'encodage des URL, ni l'encodage des ancres (ce qui signifie que les URL valides complètes ne peuvent pas être créées de manière fiable avec urlencode
!).
Caractères particuliers dans les ancres
Deux-points (:) dans les ancres
L'encodage des ancres est un peu plus compliqué : la plupart des caractères deux-points sont conservés, sauf lorsqu'ils sont en première position, même si un titre de section comme celui-ci devait commencer par un deux-points).
Donc pour le titre de cette section, vous obtenez
{{anchorencode: : Colons (:) in anchors}}
→:_Colons_(:)_in_anchors
Notez que le deux-points est transformé de manière inattendue en le faisant précéder d'un passage à la ligne, comme si ce paramètre était le contenu d'une page source wiki (ce qui génère une indentation de bloc dans le rendu) ! Le résultat ne correspond pas à l'identifiant que MediaWiki a généré pour ce titre de section.
Barres verticales (|) dans les ancres
Un bogue, (ou limitation plus critique) est observé lorsque le caractère principal est la barre verticale (pipe |
), car il est traité comme un séparateur de paramètres de {{anchorencode:...}}
(malgré le fait qu'il ne prend qu'un seul paramètre sans option supplémentaire) :
{{anchorencode: | Pipes (|) in anchors}}
→- une chaîne vide, donc tout ce qui est après la première barre verticale dans le titre de la section est ignoré !
Un contournement usuel (qui utilise le modèle d'utilitaire commun {{!}} pour éviter la barre verticale copiée renvoyée par ce modèle pour être interprétée comme séparateur de paramètres) :
{{anchorencode: {{!}} Pipes ({{!}}) in anchors}}
→|_Pipes_(|)_in_anchors
Cela fonctionne parce que l'expansion des modèles est retardée après que le nom de la fonction d'analyse syntaxique et ses paramètres dans {{anchorencode:...}}
aient d'abord été traités jusqu'au deux-points, puis séparés (pas nécessairement) selon les pipes : l'expansion des modèles, qui peut être présente dans les noms de paramètres ou les valeurs entre le deux-points et la double acollade fermante, ne se produira que lorsque ces paramètres seront interrogés par la fonction d'analyse elle-même, mais cela ne changera pas le nombre ou l'ordre de ces paramètres.
Le même contournement peut être utilisé si vous devez passer ceci :
Point-virgules (;
), astérisques (*
), ou croisillons (#
) dans les ancres
Le même bogue ne se produit pas lorsque le premier caractère non blanc (ou tout autre caractère suivant) de titre de section est un point-virgule (;
), un astérisque (*
), ou même un croisillon (#
), de sorte que ces caractères sont préservés avec le reste de la chaîne :
{{anchorencode: ; Semicolons (;) in anchors}}
→;_Semicolons_(;)_in_anchors
{{anchorencode: * Asterisks (*) in anchors}}
→*_Asterisks_(*)_in_anchors
{{anchorencode: # Sharp signs (#) in anchors}}
→#_Sharp_signs_(#)_in_anchors
Caractères espace dans le nom des pages et les ancrages (titres de section)
- Les espaces au début et à la fin sont ignorés, et les espaces restants sont mis en forme dans le nom des pages et les ancres (mais pas pour le codage des URL) :
{{PAGENAME: A B }}
→A B
{{PAGENAMEE: A B }}
→A_B
{{urlencode: A B |WIKI}}
→A__B
{{urlencode: A B |PATH}}
→A%20%20B
{{urlencode: A B |QUERY}}
→A++B
{{anchorencode: A B }}
→A_B
- Les caractères de tabulation et de passage à la ligne ne sont pas acceptés dans les noms de page, mais ils sont préservés dans l'encodage des URL et dans les ancres :
{{PAGENAME:A B}}
→(une chaîne vide, ce qui représente un nom de page incorrect)
{{PAGENAMEE:A B}}
→(une chaîne vide, ce qui représente un nom de page incorrect)
{{urlencode:A B|WIKI}}
→A%09B
{{urlencode:A B|PATH}}
→A%09B
{{urlencode:A B|QUERY}}
→A%09B
{{anchorencode:A B}}
→A_B