I created a file on my localhost with the following code:
<?php
header('Content-Type: text/plain; charset=UTF-8');
echo "yoá";
The output in my Firefox is:

Why the Unicode replacement character?
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
Because your PHP script file is not saved as UTF-8 from inside your editor. All decent editors allow you to convert between and save as several different encodings (even Notepad does this now). Save in UTF-8 and you will see the character appear normally.
Technical explanation:
The character in question is code point U+00E1 (“latin small letter a with acute”). Supposing that you have saved your script in a single-byte encoding (which is most likely), this character would be represented by the byte with hex value 0xE1, which in binary is
From the UTF-8 encoding rules, we see that this byte falls in the category
which is the first of exactly three bytes that encode a single character in the code point range U+0800 to U+FFFF. However, in your case there are either no more bytes following this one or if there are they do not satisfy the UTF-8 encoding restrictions.
Hence, the browser determines that there is a malformed byte sequence and displays the question mark instead.