Jacek Caban jacek@codeweavers.com wrote:
I don't know what's the exact problem you're trying to fix, but we maybe we don't set it in some case when we should? Looking at Gecko code, I just noticed that we should try to extract it from content type in SetContentType(), for example.
I have an application that includes many other .html files from its main.html. Main html has the following head:
<html lang="ru"> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <meta http-equiv="Content-Language" content="ru"> </head>
and Wine's mshtml renders this file correctly. Main html includes another file with the following head:
<html> <head> <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8"/> <meta content="text/html; charset=windows-1251"> </head>
and this one renders using wrong locale.
According to https://www.w3schools.com/charsets/default.asp both syntaxes are legal and should be supported starting from HTML 4.
According to my testing when loading HTML gecko first queries charset from mshtml, it returns "", and then gecko renders page using wrong locale. With my patch gecko gets "windows-1251" and this fixes page rendering.
Is this a bug in gecko or mshtml?
The easiest way to check is it to write a trivial HTML file and try it on IE, Firefox (preferably 47, which is the version Wine Gecko bases on) and Wine iexplore.exe.
It works on IE, I haven't tested with Firefox and Wine's iexplore.exe.
The <meta> element in the second HTML looks suspicious, it doesn't have http-equiv="Content-Type" attribute. Does it help if you add one?
Yes, it does help.
Also, is the problem reproducible if you load the subframe as a main frame?
How can I do that?