Använd accesskey 'n' för att hoppa till de interna navigationslänkarna i dokumentet. Hoppa till början av innehållet.
Detta dokument är en översättning av ett engelskt orginal. Om det finns tveksamheter eller fel i detta dokument, så är senaste version av det engelska orginalet den auktoritativa versionen. Copyright tillhör W3C, enligt nedan.
Översättare: Olle Olsson, SICS/W3CSweden
Avsedd läsarkrets: skriptutvecklare (PHP, JSP, etc.), webbansvariga, projektledare för webbprojekt, och alla som vill förstå hur man anger eller skickar charset-information i HTTP.
När en server sänder ett dokument till en webbklient (t.ex. en webbläsare) så skickar den även information, i Content-Type-fältet i ett HTTP-huvud, om vilken typ av dataformat som används. Denna information anges som en MIME-typ-etikett. Denna artikel ger översiktlig information som kan användas av de som behöver ange kodningsinformation i ett HTTP-huvud.
Du bör titta på andra dokument om hur man deklarerar teckenkodning i HTML-sidor, eller hur man tar reda på hur man kan inspektera information om teckenkodning som sänds i ett HTTP-huvud.
Dokument som sänds med HTTP och är av typ text, såsom text/html, text/plain, etc., kan levereras med en charset-parameter i ett HTTP-huvud som specificerar dokumentets teckenkodning.
Det är mycket viktigt att webbdokument etiketteras explicit. Specifikationen för HTTP 1.1 säger att standardvärdet för charset är ISO-8859-1. Men det finns alltför många dokument utan etikett, men som har annan kodning, vilket medför att webbläsaren utnyttjar den kodning som användaren har angett, i de fall att dokumentet inte har en explicit angiven charset-parameter.
Den relevanta raden i HTTP-huvudet ser typiskt ut som följer:
Content-Type: text/html; charset=utf-8
I teorin kan man använda vilken som helst kodning som har registrerats hos IANA, men det finns ingen webbläsare som kan hantera alla dessa. Ju mer använd en kodning är, desto bättre chans att webbläsaren kan hantera den. En Unicode-kodning som UTF-8 är ett bra val, av många skäl.
Hur man får servern att skicka ut lämplig information om charset beror på vilken server det är. Du behöver ha lämpliga administratörsrättigheter för att kunna ända serverns inställningar.
Apache. Detta kan göras genom att använda direktivet AddCharset (Apache 1.3.10 och senare) eller AddType, för mappar eller individuella resurser (filer). Med AddDefaultCharset (Apache 1.3.12 och senare), kan man sätta ett standardvärde för charset, som gäller för hela servern. Mer information om detta finns i artikeln Att ange 'charset'-information i .htaccess.
Jigsaw. Använd en indexer i JigAdmin för att knyta filnamnssuffix till charsets, eller ange charset direkt för en resurs.
IIS 5 och 6.
I Internet Services Manager
ska du högerklicka på
"Default Web Site"
(eller den webbplats du vill konfigurera) och gå till
"Properties" => "HTTP Headers" => "File Types..." => "New Type...".
Ange det filnamnssuffix du vill knyta information
till, separat för varje suffix;
IIS-användare vill troligen ange detta för
.htm, .html,...
För
Content type
ska du sedan lägga till "text/html;charset=utf-8"
(utan citationstecken; ersätt "utf-8" med den
charset
som du vill ha; skriv inte in några
blanktecken eftersom IIS ignorerar all text
efter blanktecken).
För IIS 4 kanske du måste använda
"HTTP Headers" => "Creating a Custom HTTP Header"
om det som beskrevs ovan inte fungerar.
Ett lämpligt HTTP-huvud kan även skapas med hjälp av skripts på servern. Till exempel:
Perl.
Skriv ut ett korrekt HTTP-huvud innan någon
del av sidans innehåll skrivs ut.
Efter det sista HTTP-huvudet så ska två radslut
skrivas ut, t.ex. som:
print "Content-Type: text/html; charset=utf-8\n\n";
Python. Använd samma lösning som för Perl (förutom att du inte behöver ange semikolon i slutet av kodraden).
PHP.
Använd funktionen
header()
innan något sidinnehåll genereras, t.ex. som:
header('Content-type: text/html; charset=utf-8');
Java Servlets.
Använd metoden
setContentType
på
ServletResponse
innan du skapar något objekt
(Stream eller Writer)
som ska användas vid utskrift, t.ex. som:
resource.setContentType ("text/html;charset=utf-8");
Om du använder objekt av typ
Writer
så kommer objektet
Servlet
automatiskt att ta hand om konvertering av
Java Strings
till den valda kodningen.
JSP.
Använd direktivet
page, t.ex. som:
<%@ page contentType="text/html; charset=UTF-8" %>
Det som skriv ut från
out.println()
eller från uttryckselement
(<%= object%>)
blir automatiskt konverterat till den valda kodningen.
Dessutom kommer sidan själv att tolkas som om den är i denna kodning.
ASP och ASP.Net.
ContentType
och
charset
sätts oberoende av varandra, och är metoder i svarsobjektet.
För att sätta
charset,
använd t.ex.:
<%Response.charset="utf-8"%>
I ASP.Net, om man sätter
Response.ContentEncoding
så sätts såväl
charset-parametern
för
Content-Type
i HTTP, som den konkreta kodningen av
dokumentet som sänds ut (som naturligtvis
skall vara identiska).
Standardvärde kan sättas i elementet
globalization
i
Web.config (eller Machine.config,
som initialiserats till UTF-8).
Tala om för oss vad du tycker (på engelska).
Prenumerera på en RSS-kanal.
Twitter (Nyheter på hemsidan)
Översatt från engelskt innehåll skapat/ändrat 2006-07-14. Översättningen senast ändrad 2011-07-19 9:01 GMT
Information om ändringar i orginaldokumentet kan fås genom att söka efter article-o-http-charset i i18n-bloggen.
Copyright © 1999-2011 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply. Your interactions with this site are in accordance with our public and Member privacy statements.