A HTTP karakterkészletének (charset) paraméterezése

Ha a szerver dokumentumot küld a hálózati kliensnek (user agent) (pl. böngészőnek) akkor az egy Content-Type típusú HTTP fejléc kíséretében azt is elküldi, hogy milyen formátumú a dokumentum. Ezt az információt a MIME típusú címkével fejezi ki. Ez a leírás kiindulásként szolgál azok számára, akiknek szükségük van a kódolási információ beállítására a HTTP fejlécben.

További információ a témában, pl. hogyan adjuk meg a HTML oldalak karakterkészletének kódolását, vagy hogyan tudjuk meg, hogy ellenőrizzük a HTTP fejlécben elküldött karakterkódolásról szóló információt.

A karakterkészlet paraméter

A HTTP-vel továbbított szöveges dokumentumok, mint pl. text/html, text/plain, stb., a HTTP fejlécében karakterkészlet paramétert küldhet azért, hogy pontosítsa a dokumentum karakterkészletének kódolását.

Nagyon fontos, hogy a webes dokumentumokat mindig egyértelműen címkézzük. A HTTP 1.1 az ISO-8859-1 karakterkészletet veszi alapul. De mivel más kódolásoknál túl sok a jelöletlen dokumentum, így a böngészők az olvasó által preferált kódolást használják, ha nincs más explicit karakterkészlet paraméter.

A HTTP fejlécében a sor általában így néz ki:

Content-Type: text/html; charset=utf-8

Elméletileg minden olyan karakterkódolás használható, amit az IANA regisztrált, ennek ellenére egyik böngésző sem tudja mindegyiket értelmezni. Azonban minél szélesebb körben ismert karakterkódolást használunk, annál nagyobb a valószínűsége annak, hogy a böngésző értelmezni tudja. Az Unicode kódolás, mint például az UTF-8 sok szempontból jó választás.

Szerver telepítés

A szervertől függ, hogyan küldi ki a megfelelő karakterkészlet információt. A szerverbeállítások megváltoztatásához megfelelő adminisztrációs jogokkal kell rendelkeznünk.

Apache. Ez az AddCharset (Apache 1.3.1 és későbbi változatánál) vagy az AddType segítségével oldható meg a könyvtárak vagy egyéni források (fájlok) esetében. Az AddDefaultCharset (Apache 1.3.12 és későbbi változatánál) lehetőséget ad az alapértelmezett karakterkészlet megadására az egész szerveren. További információt találunk A 'charset' információ beállítása .htaccess-ban leírásban.

Jigsaw. Használjunk indexelést a JigAdmin ban, hogy a kifejezésekhez karakterkészleteket társítsunk, vagy a karakterkészletet közvetlenül az erőforrás beállításainál állítsuk be.

IIS 5 és 6. Az Internet Services Managerben, jobb egérrel kattintsunk "Az alapértelmezett honlapon" (vagy azon az oldalon, amit be szeretnénk állítani), majd menjünk a "Tulajdonságok" => "HTTP fejlécek" => "File Típus..." => "Új típus..."-hoz. Tegyük be azt a kiterjesztést, amit el akarunk érni, minden kiterjesztést külön; IIS használók valószínűleg a .htm-et, .html-et, stb. akarják elérni. Ezután a tartalom típusának adjuk meg a "text/html;charset=utf-8" beállítást (idézőjelek nélkül; helyettesítsük a kívánt karakterkészletet UTF-8 karakterkészlettel; sehol se hagyjunk szóközt, mert az IIS figyelmen kívül hagy minden szóköz utáni szöveget). Az IIS 4 esetén előfordulhat, hogy a "HTTP fejlécek" => "Ügyfél HTTP fejléc készítése" menüt kell használnunk, ha az előbbi nem működik.

A fejléc szkriptelése

A megfelelő fejlécet a szerver oldali szkript nyelvvel is be lehet állítani. Például:

Perl. Mielőtt az aktuális oldal megjelenne, küldjük el a megfelelő fejléc informácót. Az utolsó fejléc után használjunk dupla sortörést, pl.:
print "Content-Type: text/html; charset=utf-8\n\n";

Python. Használjuk ugyanazt a megoldást, mint a Perl-nél (azzal a különbséggel, hogy nem kell pontosvessző a végén).

PHP. Használjuk a header() függvényt, mielőtt bármilyen tartalmat generálnánk, pl.:
header('Content-type: text/html; charset=utf-8');

Java Servlets. Használjuk a setContentType módszert a ServletResponse esetén mielőtt bármilyen objektumot (adatfolyamot vagy írást) használnák kimenetként, pl.:
resource.setContentType ("text/html;charset=utf-8");
Ha az írást használjuk, akkor a Servlet automatikusan gondoskodik a Java karakterek kiválasztott kódolásba történő konvertálásáról.

JSP. Használjuk az oldal irányelvét, pl.:
<%@ page contentType="text/html; charset=UTF-8" %>
Az out.println() kimenetét vagy a műveleti jeleket (<%= object%>) automatikusan a kiválasztott kódolásba konvertálja. Továbbá az oldal maga értelmezi, hogy mely kódolásban van.

ASP és ASP.Net. A ContentType és a karakterkészlet beállítása egymástól független, különböző módszerek a válasz objektumok létrehozásához. A karakterkészlet beállításához használjuk a következőt:
<%Response.charset="utf-8"%>
Az ASP.Net-ben a Response.ContentEncoding beállítása gondoskodni fog a HTTP Content-Type karakterkészlet paramétereiről valamint az elküldött dokumentum aktuális kódolásáról (amiknek természetesen meg kell egyezni). Alapértelmezettnek a globalizáció elemet lehet beállítani a Web.config esetén (vagy a Machine.config esetén, ami eredetileg UTF-8-as beállítású).