NomenNescio
NomenNescio

Reputation: 3030

Html encoding defaults to "Western (ISO-8859-1)" locally

Lets say I have the following file in called index in the directory D:\Experimental:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
  <head>
    <title>Minimal XHTML 1.1 Document</title>
  </head>
  <body>
    <p>This is a minimal <a href="http://www.w3.org/TR/xhtml11">XHTML 1.1</a> document.</p>
  </body>
</html>

If I open the link

file:///D:/experimental/index.html

I get to see the html, but it seems that the character encoding defaults to Western (ISO-8859-1), I can see this when I click view -> character encoding in firefox.

I want to display this in UTF-8 because Western (ISO-8859-1) doesn't display some characters correctly. Does anyone know how to fix this?

Upvotes: 1

Views: 1814

Answers (3)

gioele
gioele

Reputation: 10215

When loading files from disk, your browser does not have an HTTP Content-Type header to read the encoding from, so it guesses. To guess the document encoding it uses your operative systems current encoding, the actual bytes that are in the files and information inside the file itself.

As Jonathan wrote, you can add a

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

element that will help the browser using the correct content type. Anyway, note that that element will often be ignored by browsers if your document is sent from a misconfigured HTTP server that explicitly specifies another encoding the Content-Type header.

Upvotes: 1

Jonathan
Jonathan

Reputation: 7604

You should include:

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

in your HEAD element.

Edit I've just tried your example in Firefox on the Mac, and even without the meta tag, it correctly interprets the document as UTF-8. The Standard seems to indicate that it should use the XML processing instruction, but that you should also use the correct HTTP headers. Since you're not sending headers (because you're not using HTTP) you can specify them with the meta tag.

Upvotes: 2

matino
matino

Reputation: 17735

Maybe try adding

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

in <head> section?

Upvotes: 1

Related Questions