Signokodoj

Kiel skribi signojn en HTML

La ĉi-postaj klarigoj antaŭsupozas bazajn sciojn pri HTML.

Rekta skribo laŭ la aktuala kodo/kodprezento

Kiam oni verkas HTML-paĝon, oni povas simple kaj rekte (normale per unuopaj bitokoj) skribi ĉiujn signojn, kiuj enestas en tiu signokodo, kiun oni elektis. Por ke la legiloj sciu, kiun signokodon oni uzis, normale la servilo sendu kaŝan informon pri tio en t.n. http-ĉapo antaŭ ol la efektiva paĝo estas liverata (pri tio legu ankaŭ en miaj klarigoj pri Esperantaj literoj en TTT).

Se oni ne povas agordi sian servilon, ke ĝi sendu tian informon, oni povas anstataŭe en la ĉapo de la HTML-paĝo (la parto inter <head> kaj </head>) aldoni meta-elementon, kiu informas pri la uzata signokodo kaj kodprezento, ekz.:

   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

Tiu linio montras, ke Latino 1 (iso-8859-1) estas uzata.

Simile:

   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />

   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-3" />

   <meta http-equiv="Content-Type" content="text/html; charset=koi8-r" />

Kiam oni uzas Unikodon, la kodprezento UTF-8 estas la plej bona elekto:

   <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />

Se oni uzas XHTML-on, oni ankaŭ metu tian informon en t.n. XML-deklaron (krom se la signokodo estas UTF-8UTF-16 - tiam XML-deklaro estas libervola). Tian XML-deklaron oni metu plej unue en la XHTML-paĝo. Ekz.:

   <?xml version="1.0" encoding="iso-8859-1"?>

   <?xml version="1.0" encoding="iso-8859-3"?>

   <?xml version="1.0" encoding="utf-8"?>
   (libervola deklaro, ĉar UTF-8 estas uzata)

Pri XHTML kaj XML-deklaroj vidu detalojn en miaj paĝoj pri XHTML.

Simbolaj kaj numeraj indikoj de signoj

La baza signokodo de HTML 4 kaj de XHTML 1.0 estas Unikodo (antaŭe estis Latino 1). Sendepende de la uzata kodo kaj kodprezento oni ĉiam povas enmeti ĉiun ajn Unikodan signon per ĝia HTML-nomo aŭ per numera referenco. Eĉ se oni uzas ekz. la kodon Latino 2, oni povas uzi signojn el ekz. Latino 1, kiuj mankas en Latino 2, se oni skribas ilin nome aŭ numere. Same oni povas enmiksi ekz. Rusajn literojn en Latino-3-an paĝon, Grekajn signojn en paĝon Latino-4-an, k.t.p. Jen kelkaj ekzemploj:

  • &#234; / &#xEA; / &#xea; / &ecirc; = “ê”.
  • &#321; / &#x141; = “Ł”.
  • &#261; / &#x105; = “ą”.

Estu &# antaŭ dekuma numero, kaj &#x antaŭ deksesuma numero (kaj ĉiam ; poste). Dekumaj kodoj estas pli fidinde uzeblaj. La deksesumaj ofte tute ne funkcias. En multaj tabeloj de signoj oni tamen donas nur deksesumajn numerojn. (Rimarku, ke se oni uzas XHTML-on, nepre estu minuskla “x” en &#x.)

Estu & antaŭ HTML-nomo, kaj ; poste.

Kompreneble estas plej oportune skribi ĉiujn signojn rekte. Tiam necesas uzi signokodon, kiu enhavas la bezonatajn signojn, kaj tekstoredaktilon, kiu regas tiun signokodon. Sed numeraj referencoj kaj HTML-nomoj ofte povas esti konvenaj, se oni ne scias, kiel tajpi iun signon. Por malofte bezonataj signoj tia solvo povas ofte esti oportuna.

Kelkaj konsiloj

Se oni uzas nur signojn el Askio, kaj indikas ĉiujn aliajn signojn per numeraj referencoj aŭ simbolaj HTML-nomoj, tiam oni ne bezonas anonci la uzatan signokodon, ĉar Askio estas subaro de ĉiuj normalaj signokodoj. Tio estas do la plej sekura maniero skribi HTML-paĝojn. Bedaŭrinde iuj malnovegaj TTT-legiloj estas fuŝe faritaj, kaj foje tamen reagas malĝuste al tia tute laŭnorma HTML. Ekz. por plaĉi al la eraroplena TTT-legilo Netscape Navigator 4 (nun praktike tute formortinta) oni bezonis enmeti indikon pri UTF-8 (aŭ UTF-7) en paĝon, kiu uzas Unikodajn signojn super 255, eĉ se oni tute ne uzas UTF-8-on (nek UTF-7-on). Alie la legantoj devis mem enŝalti Unikodan montradon. (Rimarku, ke UTF-7 estas tre malrekomendinda. En UTF-7-a paĝo oni ne povas uzi ĉiujn ajn Askiajn signojn - iujn oni devas speciale kodi, kaj tio povas doni problemojn. Uzu UTF-8-on.)

Kiam temas pri tiaj ĉi tiklaj aferoj (kaj ankaŭ aliokaze), oni ne povas fidi je la konduto de nur unu TTT-legilo (tiu, kiun oni mem hazarde uzas...). Ne estas certe, ke ĉio estas en ordo, nur ĉar la paĝoj aperas ĝuste, kiam oni rigardas ilin per TTT-legilo. Necesas lerni kaj sekvi la oficialajn normojn. Nur tiel oni povas (almenaŭ iom) fidi, ke la HTML-paĝoj, kiujn oni verkas, aperos ĝuste en ĉiuj diversaj TTT-legiloj (kaj en konataj legiloj, kaj en tute ne konataj, kaj en jam aperintaj legiloj, kaj en iam aperontaj).

Iuj HTML-redaktiloj mem ŝanĝas ĉiujn bitokojn super 127 en simbolajn HTML-nomojn. Se vi verkas paĝon, kiu ne uzas Latinon 1, vi atentu, ke la HTML-redaktilo vere komprenas la uzatan signokodon. Multaj tiaj programoj ĉiam supozas, ke Latino 1 estas uzata, kaj povas tute fuŝi la kodon. Se vi intencas uzi Latinon 3, kaj enskribas ekz. la Esperantan literon “c” kun cirkumflekso, povas esti, ke la HTML-redaktilo kaŝe ŝanĝas ĝin en la HTML-kodaĵon &aelig;, kiu kompreneble indikas tute alian literon (ae-ligaĵon). Tio okazas, ĉar “c” kun cirkumflekso hazarde havas la saman kodpozicion (en Latino 3) kiel ae-ligaĵo (en Latino 1). Ĝustaj kaj laŭnormaj TTT-legiloj ĉiam montras &aelig; kiel ae-ligaĵon. Nur fuŝaj legiloj (kaj TTT-legiloj, al kiuj oni trudis falsajn tiparojn) povas montri ĝin kiel alian signon. Kontrolu do, ke via HTML-kodo vere enhavas tion, kion vi volas, ke ĝi enhavu.

Memoru, ke simbolaj HTML-nomoj (ekz. &ecirc;), kaj numeraj HTML-kodoj (ekz. &#234;&#xEA;) ĉiam referencas al signoj en Latino 1 aŭ Unikodo. Neniel eblas uzi tiajn kodojn por referenci al signo en alia signokodo (ekz. Latino 3 aŭ Latino 2), se la signo ne estas sama kiel en Latino 1. Se tia erara indiko iafoje ŝajnas doni la celitan rezulton, tio nur signifas, ke la TTT-legilo estas rompita, aŭ ke iu instalis tiparon kun falsaj signobildoj.

Novaj HTML-nomoj

Ĉe multaj signoj mi indikis en la ĉi-tieaj tabeloj simbolan HTML-nomon. Por signoj en Latino 1, tiaj HTML-nomoj funkcias praktike ĉiam. Aliaj tiaj nomoj estas pli nove enkondukitaj (ekde HTML 4). Tiuj novaj HTML-nomoj funkcias en ĉiuj bonaj modernaj TTT-legiloj, sed en kelkaj malnovaj legiloj, ankoraŭ uzataj de ne ignorebla nombro de legantoj, ili bedaŭrinde ne funkcias. Tial, por referenci al signoj, kiuj ne aperas en Latino 1, oni uzu prefere la Unikodajn signonumerojn.

Jen kompleta kolekto de tiaj novaj simbolaj nomoj:

simbola kodo numera kodo signobildo (laŭ via TTT-legilo)
&OElig; &#338; Œ
&oelig; &#339; œ
&Scaron; &#352; Š
&scaron; &#353; š
&Yuml; &#376; Ÿ
&fnof; &#402; ƒ
&circ; &#710; ˆ
&tilde; &#732; ˜
&Alpha; &#913; Α
&Beta; &#914; Β
&Gamma; &#915; Γ
&Delta; &#916; Δ
&Epsilon; &#917; Ε
&Zeta; &#918; Ζ
&Eta; &#919; Η
&Theta; &#920; Θ
&Iota; &#921; Ι
&Kappa; &#922; Κ
&Lambda; &#923; Λ
&Mu; &#924; Μ
&Nu; &#925; Ν
&Xi; &#926; Ξ
&Omicron; &#927; Ο
&Pi; &#928; Π
&Rho; &#929; Ρ
&Sigma; &#931; Σ
&Tau; &#932; Τ
&Upsilon; &#933; Υ
&Phi; &#934; Φ
&Chi; &#935; Χ
&Psi; &#936; Ψ
&Omega; &#937; Ω
&alpha; &#945; α
&beta; &#946; β
&gamma; &#947; γ
&delta; &#948; δ
&epsilon; &#949; ε
&zeta; &#950; ζ
&eta; &#951; η
&theta; &#952; θ
&iota; &#953; ι
&kappa; &#954; κ
&lambda; &#955; λ
&mu; &#956; μ
&nu; &#957; ν
&xi; &#958; ξ
&omicron; &#959; ο
&pi; &#960; π
&rho; &#961; ρ
&sigmaf; &#962; ς
&sigma; &#963; σ
&tau; &#964; τ
&upsilon; &#965; υ
&phi; &#966; φ
&chi; &#967; χ
&psi; &#968; ψ
&omega; &#969; ω
&thetasym; &#977; ϑ
&upsih; &#978; ϒ
&piv; &#982; ϖ
&bull; &#8226;
&hellip; &#8230;
&prime; &#8242;
&Prime; &#8243;
&oline; &#8254;
&frasl; &#8260;
&weierp; &#8472;
&image; &#8465;
&real; &#8476;
&trade; &#8482;
&alefsym; &#8501;
&larr; &#8592;
&uarr; &#8593;
&rarr; &#8594;
&darr; &#8595;
&harr; &#8596;
&crarr; &#8629;
&lArr; &#8656;
&uArr; &#8657;
&rArr; &#8658;
&dArr; &#8659;
&hArr; &#8660;
&forall; &#8704;
&part; &#8706;
&exist; &#8707;
&empty; &#8709;
&nabla; &#8711;
&isin; &#8712;
&notin; &#8713;
&ni; &#8715;
&prod; &#8719;
&sum; &#8721;
&minus; &#8722;
&lowast; &#8727;
&radic; &#8730;
&prop; &#8733;
&infin; &#8734;
&ang; &#8736;
&and; &#8743;
&or; &#8744;
&cap; &#8745;
&cup; &#8746;
&int; &#8747;
&there4; &#8756;
&sim; &#8764;
&cong; &#8773;
&asymp; &#8776;
&ne; &#8800;
&equiv; &#8801;
&le; &#8804;
&ge; &#8805;
&sub; &#8834;
&sup; &#8835;
&nsub; &#8836;
&sube; &#8838;
&supe; &#8839;
&oplus; &#8853;
&otimes; &#8855;
&perp; &#8869;
&sdot; &#8901;
&lceil; &#8968;
&rceil; &#8969;
&lfloor; &#8970;
&rfloor; &#8971;
&lang; &#9001;
&rang; &#9002;
&loz; &#9674;
&spades; &#9824;
&clubs; &#9827;
&hearts; &#9829;
&diams; &#9830;
&ensp; &#8194; (sen aspekto)
&emsp; &#8195; (sen aspekto)
&thinsp; &#8201; (sen aspekto)
&zwnj; &#8204; (sen aspekto)
&zwj; &#8205; (sen aspekto)
&lrm; &#8206; (sen aspekto)
&rlm; &#8207; (sen aspekto)
&ndash; &#8211;
&mdash; &#8212;
&lsquo; &#8216;
&rsquo; &#8217;
&sbquo; &#8218;
&ldquo; &#8220;
&rdquo; &#8221;
&bdquo; &#8222;
&dagger; &#8224;
&Dagger; &#8225;
&permil; &#8240;
&lsaquo; &#8249;
&rsaquo; &#8250;
&euro; &#8364;