如何防止钻石形状的问号出现?

I searched through StackOverFlow and found similar questions but nothing that answered my particular situation so I thought of asking this as a new question.

When i insert entries into the database form a textbox, i use mysql_real_escape_string(); and then when i display the information i use htmlspecialchars();

I use UTF-8 as the charset. We are using HTML5 formatting. The collation for the database was by default set to latin1_swedish_ci, so i used that. For all the tables its set to latin1_swedish_ci. For all the fields in the table we use utf8_general_ci.

As an example, this is how it looks when its shown:

   �Who are you?� he asked his iPhone. �I am a humble 
   personal assistant,� the device replied, bringing the biggest...

How do i fix this?

Your problem is the collation setting, make sure it is one of the utf8 ones (like utf8_general_ci) for database, tables and text fields.

Furthermore make sure that you are setting your connection charset to UTF-8 as well :

SET NAMES utf8;