timster - 4:38 am on Mar 3, 2011 (gmt 0)
Relax and let the pain go, you are not the first or will you be the last to have character encoding trouble.
So why does an "a" come through fine but and "á" get scrambled? As they say, a computer doesn't really know letters, just numbers. Long ago, computer makers agreed that when it came to representing letters, 97 would mean "a". (This is the ASCII standard.) But back then you couldn't type á into your computer, so it didn't get a number. And to this day, there is no universal agreement on what number should represent it. That is, there are many character encodings where "a" is 97 but for "á" the number is not consistent.</div>
So what do you need to do? The easiest thing to do is to find out what character encoding your MySQL data is in, and then make sure the PHP web application uses it to communicate with MySQL. Third, make sure your app is telling the browser to use the same encoding as well. (The other way is to translate character sets on the way. That doesn't sound like it is necessary here.)
Check the "character set" variables in MySQL to ensure they are all the same, by running the following SQL statement:
The PHP function "mysql_client_encoding" returns what character set PHP is using to communicate with the MySQL database.
You inform the browser to use a character set either in the HTTP header or in a meta tag.
You can confirm what character set Firefox is using by control clicking the page and selecting "View Page Info."
I hope that's enough to get you going. For further reading, Wiki has a good description of character encodings.