The problem of character set encodings for the web is related to the general problem of CharacterSetEncodingsForMarkup. There are some differences however.
In web browsing the browser often has an option for selecting an explicit encoding. It usually has an option for autodecting the encoding as well. However, if the user specifies a specific encoding, the file should be decoded using that encoding. If the user is to be able to select a preferred encoding, then there is an issue of creating an interface element to present the set of all character set decoders that are available. It may also be helpful to group these decoders together. For example, they may be grouped by language: English, Russian, Chinese, etc...
Aside from these options, the HTTP protocol itself provides a mechanism for requesting a file from a server that is in a particular encoding. The HTTP protocol can also pass information from the server to the client that gives the client the encoding that server believes that the file is in. The server could be wrong, of course.