Question

I just validated a html doc using the W3-validator , and found that If I use:

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

with:

<!DOCTYPE HTML>
  • It throws a warning Line 4, Column 72: Using windows-1252 instead of the declared encoding iso-8859-1.

However, it is fixed if I use:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

I don't really understand what is happening, also I don't even know how to use the DOCTYPE tag, I just copied and pasted one from around the web.

Can someone point me in the right direction to understand:

  • why this happens
  • and, how to use the DOCTYPE tag
Was it helpful?

Solution

Couple points:

  1. Any HTML5 validation should be taken with a grain of salt. The spec is still under active development, and not everything is set in stone.
  2. You're using the HTML4 syntax for that meta tag. Try <meta charset="iso-8859-1">

That said, HTML validators don't serve that much purpose in this day and age.

Also, why do you need to specify that particular charset?

EDIT:

My bad, apparently the default for HTML4 was iso=8869-1. That said, the default charset for HTML5 is utf-8.

More information about the HTML5 doctype can be found in this post by John Resig

OTHER TIPS

Changing the DOCTYPE is simply turning off the warning - it isn't actually fixing anything.

iso-8859-1 and windows-1252 are very similar encodings. They differ only in the characters associated with the 32 byte values from 0x80 to 0x9F, which in iso-8859-1 are mapped to control characters and in windows-1252 are mapped to some useful characters such as the Euro symbol.

The control characters are useless in HTML, and web authors often mistakenly declare iso-8859-1 and yet use one or more of those 32 values as if they were using windows-1252, so browsers when they see the iso-8859-1 charset being declared will automatically change this to be windows-1252.

The validator is simply warning you that this will happen. If you're not using any of the 32 byte values, then you can simply ignore the warning - it's NOT an error. If you are, and you genuinely want the iso-8859-1 interpretation of the byte values and not the windows-1252 interpretation, you are doing something wrong.

Again, this switching happens in browsers for any DOCTYPE, it's just that the HTML5 validator is being more helpful about what it is telling you than the HTML4 validator is.

It throws a warning Line 4, Column 72: Using windows-1252 instead of the declared encoding iso-8859-1.

It means the file was saved with the encoding windows 1252 on creation (aka Western Windows 1252 or cp1252) and your charset declaration says "hey read this file with iso-8859-1" when that's not the encoding the file has.

The meta charset exist for that reason. It exist to declare the encoding of the file you are sending/reading/using so when, for example a browser, reads the document it knows what encoding the file is using.

In detail, you have this charset declared:

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

But the file you are validating is actually encoded in Windows 1252. How? Why? Check the text editor you are using and what encoding it is using to save files. If the editor can be configured to change the encoding, choose the one you want to use.

About HTML5

Using

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

or

<meta charset="iso-8859-1">

are both valid for HTML5. See <meta charset="utf-8"> vs <meta http-equiv="Content-Type">

I can see this is an old question, but thought it better to provide an updated answer. Maybe I've noticed something others haven't (after encountering the same problem and thus finding this post before working it out myself).

The W3C validator offers options for which encoding the validator uses. You have specified encoding in your document, so you should see "Encoding: iso-8859-1" in the top block of information once the validator has been run. To the right of that, there is a pull-down menu. Change the choice from "(detect automatically)" to "iso-8859-1 (Western European)". The validator will then use iso-8859-1 instead of its own choice, and you will not receive the error.

Do the follow:

ISO 8859-15 yeah -15 and it will work. I know this answer is new and the question is old but the idea is that future users comming from search engines like me gets the correct answer

Don't place too much stock in the validators. There are typically too many Internet Explorer work-arounds, particularly in the css, that will trip up the validator. If your pages work in all browsers and your client is happy, does it matter what some validator says?

If you are specifying the html5 doctype, then you should be consistent with the meta charset attribute. Try this though for your pages:

<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
</head>

<body>
</body>
</html>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top