PHP中出现乱码的UTF-8字符

<?php
        require ('sql_connect.php');

        $query = "select * from `products`";
        $result = mysql_query($query);

        while($row = mysql_fetch_array($result))
        {
            $imagem = $row['imagem'];
            $texto = $row['texto'];

            echo "<img src=Images/Products/$imagem> <br> $texto";
        }
        ?>    

I have the image and the text of the image that i want to show in my database.

I show the image but i have problems with the text... The text dont show the enters/spaces and the accents.

Image of problem: http://imgur.com/LHg4eK6,C7SZD4M

I want this: http://imgur.com/LHg4eK6,C7SZD4M#1

This is happening because you didn't properly set the encoding to UTF-8 (or another one that contains all characters you want to display). To do this, you need to:

  • Set the encoding to UTF-8 in the database itself (you can skip this step if you can see the text properly in PhpMyAdmin).
  • Tell PHP that you're using UTF-8. To do this, run:

    mysql_query("SET NAMES utf8");
    

    right after you connect to the database (add this line to the end of your sql_connect.php file).


Please note that you shouldn't use mysql_* functions anymore (see my comment on your question). If you switch to MySQLi, you can run this:

$db->set_charset("utf-8");

to change the charset.


See also: