Manuel:Encodage PAGENAMEE
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) :
!
$
(
)
*
,
.
/
:
;
@
_
- In recent versions of MediaWiki,
-
is converted to-
if it is the first character of the string. See phab:T358338 for more details.
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.
- So to compare pagenames safely with the result of
{{PAGENAME}}
with a specified static name containing one of the three special characters which has not been HTML-encoded (for example the value of a parameter given to a transcluded template in a wiki page), you can first convert that parameter to the same special encoding performed byPAGENAME
, by passing this value as a parameter of the{{PAGENAME|...}}
parser function. - 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
.
- In order to type in a pagename as a URL in your web browser that will go directly to the page, the following two characters must be URL-style encoded while being typed in:
% ?
as%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
The following table shows the effect of the various supported encodings over the full set of printable ASCII characters (plus SPACE) and on the two first printable Unicode characters after ASCII. Tabulations and other whitespace controls are discussed more completely in the section below about whitespaces, but the table shows some contextual "effects" occurring with possibly dropped spaces and some other characters.
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. | .%20%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 | ._. | ._. | ! | " |
|
$ | % | & | ' | ( | ) |
|
+ | , | . | .. | ... | / |
|
|
< | = | > | ? | @ | [ | \ | ] | ^ | ` | { | | | } | ~ | ¡ |
With the various encodings proposed in MediaWiki, it is notable that the only characters that are never transformed (or removed) are the 10 decimal digits, the minus-hyphen (-
) and the uppercase Basic Latin letters (A-Z
: an initial lowercase letter may be transformed by capitalisation in most wikis except those that preserve the case distinction in page names).
Note also that namespace names and interwiki prefixes don't have a case-significant letters, and if they are recognized at the beginning of a title, they may be replaced by an incompletely unrelated term, possibly in another language and/or script!
So be careful with everything that comes before a colon (:
) as the behavior will be specific for each wiki and their own local set of recognized namespace names (or synonyms) and interwiki prefixes (however these local prefixes do not affect what urlencode
and anchorencode
will return, which is independent of local naming rules for each 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
). It is not used in web URLs, only on local file pathnames for use with Unix-like shells (without needing extra escaping or quotation marks). 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. - The
WIKI
style was the default style in MediaWiki before version 1.17; it unfortunately dropped some leading characters —the asterisk (*
), colon (:
), or semi-colon (;
)— causing problems when using it to pass values in query parameters to a remote web API. 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
The colon (:
) is treated specially in page names when it is the first character in the trimmed[2] given name (where it will link to a description page instead of showing the content of that page when it is one of the special name spaces like "File", "Image", or "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)
Otherwise, if the non-empty text before the first colon matches a known local namespace, then this name space and the colon will be dropped, along with spaces immediately after that colon (the dropped namespace will be trimmed[2] and returned by {{NAMESPACE:...}}
):
{{PAGENAME: File : Example }}
→Example
{{NAMESPACE: File : Example }}
→File
Otherwise, if the non-empty text before the first colon matched a known interwiki prefix, then this prefix and that colon are dropped, along with spaces immediately after that colon, but an empty namespace will be returned:
{{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 }}
→
Otherwise, the colons are kept, even of the text before the first colon could be a valid interwiki prefix (containing only letters without case distinction, or digits, or minus-hyphens and dashes, spaces or underscores; not restricted to be ASCII only):
{{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).
An URI scheme should then contain a colon (:
), but MediaWiki currently recognizes only URI schemes where the colon is final, in a restricted list; otherwise.
Par exemple sur ce wiki,
"{{PAGENAME|//www.mediawiki.org/}}"
→"//www.mediawiki.org/"
On Wikimedia sites, such as MediaWiki.org, the double slashes are recognized as URIs, and most valid URIs are disallowed as page names (if an URI scheme is present, it could be recognized as a name space it it has been configured, otherwise the page name will fall into the main namespace of the 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-without-spaces (also displayed show verbatim, but the link will be conditionally activated as it is subject to restrictions of recognized URI schemes).
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 :
[[//www.mediawiki.org/|www.mediawiki.org]]
→[[1]]
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
A more critical bug/limitation is observed when the leading character is a pipe (|
), because it is treated as a parameter separator of {{anchorencode:...}}
(despite the fact that it takes only a single parameter with no extra option):
{{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
This works because the expansion of templates is delayed after the parser function name and its parameter(s) in {{anchorencode:...}}
have first been parsed up to the colon, and then (needlessly) separated on pipes: the expansion of templates, which may be present within parameter names or values between the colon and the double closing brace, will occur only when these parameters will be queried by the parser function itself, but this will not change the number or order of these parameters.
Le même contournement peut être utilisé si vous devez passer ceci :
- two verbatim opening braces (
{{
) by using {{(}}{{(}} or {{((}} - two verbatim closing braces (
}}
) by using {{)}}{{)}} or {{))}}
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