charset=iso-8859-1 with <!DOCTYPE HTML> throwing a warning?

95,668

Solution 1

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

Solution 2

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.

Solution 3

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">

Solution 4

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.

Solution 5

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

Share:
95,668
ajax333221
Author by

ajax333221

Hi ajax.loopring.eth GitHub twitter facebook

Updated on December 19, 2020

Comments

  • ajax333221
    ajax333221 over 3 years

    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
  • Andrew Stewart
    Andrew Stewart over 12 years
    utf-8 is the preferred charset for HTML5. You can find more information here
  • Wesley Murch
    Wesley Murch over 12 years
    What does this comment mean?: "HTML validators don't serve that much purpose in this day and age."
  • Mr Lister
    Mr Lister over 12 years
    @Madmartigan Most browsers use different rules for interpreting HTML than the W3 validator does. For instance, put a <title> in the <body> instead of the <head>. No browser in the world will have problems with that! Yet the validator complains that you shouldn't do that. (That said, you really shouldn't do that, but you see what I mean. For browser intercompatibility, testing in many different browsers is more relevant than making sure your source passes the validator.)
  • Wesley Murch
    Wesley Murch over 12 years
    I totally disagree: The validator will catch things that can escape the naked eye. Invalid HTML is a great way to get unexpected, inconsistent behavior because each browser may handle it differently. Examples: unclosed or mismatched tags, invalid or broken attributes, quotes where they shouldn't be, unterminated entity strings, improper nesting, missing required attributes, etc. I'm not sure what point you're making with that example.
  • Timo Huovinen
    Timo Huovinen almost 11 years
    the way that html is parsed was standardized in 2007 as far as I know
  • jfs
    jfs about 6 years
    iso-8859-15 differs from iso-8859-1. If they were the same, only the first two rows would differ for iso-8859-15 and windows-1252 (but they differ outside 0x80..0x9f range too).
  • Nathaniel
    Nathaniel about 3 years
    The format of the <meta> tags is valid. But the value is not. For HTML5 the value must be utf-8. The charset attribute specifies the character encoding used by the document. This is a character encoding declaration. If the attribute is present, its value must be an ASCII case-insensitive match for the string "utf-8".HTML5 Spec
  • delroh
    delroh about 3 years
    @Nathaniel read OP's question. This answer is in the context of the question, which is why it is using that charset. UTF-8 is the recommendation and "best practice" sure, but you are free to use another one as long as you comply to it, meaning that the file you are sending is actually saved in that charset. Read w3's answer on that w3.org/International/questions/…
  • Peter Mortensen
    Peter Mortensen about 2 years
    "ISO 8859-15" is not an action. However, the OP has left the building ("Last seen more than 6 years ago").