Mòdul:urlencode
A continuació es mostra la documentació transclosa de la subpàgina /ús. [salta a la caixa de codi]
Mediawiki utilitza la codificació de caràcters UTF-8. Així la funció {{urlencode: }}
codifica en aquesta norma.
Alguns llocs webs poden utilitzar altres codificacions. Això es pot trobar amb una funció del navegador per visualitzant el codi font de la pàgina, donant alguna cosa com:
<meta charset="UTF-8" />
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-1" />
Per codificar en latin1 o ISO 8859-1 es pot usar la sintaxi:
{{#invoke:urlencode|encode|<text>|ISO 8859-1}}
o bé la drecera
{{#invoke:urlencode|latin1|<text>}}
Per exemple:
{{#invoke:urlencode|latin1|Viquipèdia}}
→ Viquip%E8dia
en canvi compareu
{{urlencode:Viquipèdia}}
→ Viquip%C3%A8dia
Vegeu els casos de prova en la pàgina de discussió.
-- Codificació de caràcters amb normes diferents a UTF-8
local p = {}
local encoders = {}
encoders["ISO 8859-1"] = function(text)
local ret = {}
for cp in mw.ustring.gcodepoint(text) do
if cp >= 256 then
error("Caràcter ISO 8859-1 no vàlid: \"" .. mw.ustring.char(cp) .. "\".")
end
table.insert(ret, string.char(cp))
end
return table.concat(ret)
end
-- strip combining diacritical marks: U+0300-U+036F
-- see https://en.wikipedia.org/wiki/Combining_character
encoders["nodiacritics"] = function(text)
return (mw.ustring.gsub(mw.ustring.toNFD(text), "[\204\128-\205\175]", ""):gsub(" ", "-")) -- parentheses for string gsub result, not count
end
-- converts a title to text with hyphens, lowercase and no diacritics
encoders["hyphens"] = function(text)
local ret = encoders["nodiacritics"](text)
ret = mw.ustring.lower(ret)
ret = mw.ustring.gsub(ret, "['’]", "")
return ret
end
function p.encode(text, encoding)
if type(text) == "table" then
encoding = text.args[2]
text = text.args[1]
end
local encoder = encoders[encoding]
if not encoder then
error("No existeix el codificador \"" .. encoding .. "\".")
end
return mw.uri.encode(encoder(text))
end
-- drecera, compatibilitat amb sintaxi anterior
function p.latin1(text)
if type(text) == "table" then
text = text.args[1]
end
return p.encode(text, "ISO 8859-1")
end
return p