The short answer is that Beautiful Soup is transparently converting your HTML files to
UTF-8. You don't need to manually edit the meta tag.
As part of parsing a file, Beautiful Soup converts the data from its native encoding to Unicode. At any point after that, outputting the markup--whether you are using print() or methods like encode(), decode(), or prettify()--requires specifying an output encoding. The default output encoding is UTF-8.
When the Tag object for a <meta> tag is encoded back into a string, the value of the charset parameter is set to the output encoding--not the original document encoding, which might be inaccurate.
That's why print(soup.head) gives you content="text/html; charset=utf-8". It's the same as calling print(soup.head.decode()) which is the same as calling print(soup.head.decode("utf8")). If you call print(soup.head.decode("euc-jp")) you'll get content="text/html; charset=euc-jp", and so on.
To see the original value of the "content" attribute of the <meta> tag, you can check soup.meta['content']. It's still in there, but that particular string will only be output if you ask for cp-1252 as the output encoding.
To see the original encoding of the document itself, you can check soup.original_encoding
Leonard