The page declares to send all characters in latin1 encoding but then sends UTF-8 in reality. The browser obeys and faithfully tries to display latin1.
Two solutions: either you change the HTTP-EQUIV line and declare that you will be sending utf-8 or you change the other end (PHP) and make it to send iso-8859-1 (a.k.a. latin1).
I have not the slightest idea how the latter is done but I see a possible cause for your problem: SuSE 9 used the iso-8859-1 encoding by default but this has changed since then. Now the default is utf-8. You can try to switch the whole machine back to latin1 using yast2. The setting is found under ‘Languages’.
I can give you no guarantee that it will not break other things.
Changing the charset to UTF-8 (for the connection, database, data) in MySQL does nothing useful in your case. In fact I have the reverse situation for some web apps, the default charset is Latin-1 because it’s an older MySQL version, and yet I store UTF-8 data fine in it. What it does affect are things like collation functions in MySQL which I don’t use.
If you wanted to go to UTF-8 throughout you would have to convert all the text data in MySQL from Latin-1 to UTF8. It can be done, and you can find tutes on how to do it if you search.
However you may just wish to not bite into that problem now and just tell the web browser that the data is in Latin-1. This can be done on a per page basis using the Content-Type header in HTTP. Your page should output Content-Type: text/html; charset=iso8859-1. This can be done using the header() function in PHP. Because headers have to be output before the body, you must invoke header() before any HTML is output by the PHP code. Typically at the top of the script. For example in my PHP code, I have:
header('Content-Type: text/html; charset=utf-8');
as the very first line in the PHP file. In this example, I am using utf-8 in my web app. You would put iso8859-1.
You can use the web browser to look at the page info to see that it has output the correct Content-Type declaration.
This is independent of the OS’s or Apache’s default charset since your data is stored in MySQL. However if you are outputting any text from files or even from string literals, then those must also be in iso8859-1. You can do this by changing the charset in vim when you edit the file. The OS will happily store it unchanged, files are just sequences of octets in Linux.