Well, I'm going to ask a question because from Guilherme Nascimento's answer I found the answer.
The problem is not a COLLATE problem but a problem between Mysql and PHP. We know that PHP does not use utf8. It was intended for PHP6 but will 'theoretically' happen only in PHP7.
Let's then see how to make a site in utf8 to understand the difficulty.
At first, I'm going to create my BDD and then the tables. All in utf8. When I'm going to test, using Guilherme Nascimento's test, it's all right. Cool!
Then I'll create my PHP code and create the HTML page where I'll put it:
<meta content="text/html; charset=UTF-8" http-equiv="content-type" />
Then I will create a php document, where I will put for example:
define ("TITULO","Direção");
I will save in UTF8 and send using FTP software, which will not change the code.
I will create a page with a form and an INPUT field using the title defined in my define.
Nice! I will see "Direction" as title, I will type for example "national direction" in the field. In the submit, the content will be sent in the second PHP page and I'll save it using a SELECT.
In reading, I'll simply do a SELECT * FROM TAB. I'll do an echo by putting title and then the containing of my table and I will have:
Direção: direção nacional
Right now, I'm going to make sure everything is right. But it is not. Really, inside the table, I do not have "national direction". I have "national direction". But as in reading, it has automatic data conversion, which gives the illusion that the data is correct. The problem is that when I'm going to need to do an ORDER BY, MySQL will do it using "national" and the result will be wrong.
In his example Guilherme Nascimento uses a fiddle then, a closed system. Which explains why it works perfectly.
Solution
The solution is simple. Immediately after mysqli_connect, you need to put mysqli_set_charset.
$handle = mysqli_connect($sql_host,$sql_user,$sql_password,$sql_database);
mysqli_set_charset($handle,'utf8');
From this, when you type "direction", the table will have "direction" and ORDER BY will be a bandstand.
But for old data ???
Unfortunately, exporting to re-importing will change anything. Because we are going to export "national direction" and reimport "national direction". Actually, you need to read the data without doing the mysqli_set_charset, then do the mysqli_set_charset and do an INSERT.
Then:
1 - Conectar usando mysqli_connect (sem fazer o mysqli_set_charset)
2 - Ler os dados da tabela e salvar para preparar o query para INSERT elas
3 - Fazer um TRUNCATE na tabela
4 - Fazer o mysqli_set_charset($handle,'utf8');
5 - Fazer o INSERT dos dados
So, I'm going to read it in the old way and then I'll insert it in the new way.
Now, everything is right !!