The actual HTTP response headers will always override the HTML <meta>
headers. As per your comment:
I'm not too familiar with headers, here is the response header from the working page:
Date: Thu, 24 Jun 2010 05:24:23 GMT
Server: Apache/2.0.63 (Win32) PHP/5.2.11
X-Powered-By: PHP/5.2.11
Content-Length: 3622
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8
200 OK
and the non-working page:Date: Thu, 24 Jun 2010 05:26:54 GMT
Server: Apache
X-Powered-By: PHP/5.2.12
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html
200 OK
See, the HTTP response header of the non-working page has a Content-Type
of text/html
without any specified charset. It should have been text/html; charset=UTF-8
.
You can go around this by adding the following line to the top of your PHP page, before you emit any character (HTML) to the response body.
header('Content-Type: text/html; charset=UTF-8');
Update: as per the comments, the above cause seems to be excluded. Next check; is the file itself saved as UTF-8? Rightclick page and view source. Are the question marks also there? If so, then something went wrong during FTP transfer to the hosting. Choose binary instead of text/ASCII or set character encoding for transferred text files in FTP client settings and retry.