PHP&;MySQL-UTF-8编码存在问题

PHP&;MySQL-UTF-8编码存在问题,php,mysql,utf-8,Php,Mysql,Utf 8,我有一个表单,其输入可以接受UTF-8字符: <form method="post" action="faz-personagem.php" accept-charset="UTF-8"> <div class="row"> <label for="nome">Nome</label> <input type="text" name="nome"> </div> ... <button

我有一个表单,其输入可以接受UTF-8字符:

<form method="post" action="faz-personagem.php" accept-charset="UTF-8">
  <div class="row">
    <label for="nome">Nome</label>
    <input type="text" name="nome">
  </div>
  ...
  <button type="submit">Enviar</button>
</form>

诺姆
...
羡慕
以及将数据发送到数据库的脚本:

<?php

header("Content-Type: text/html;charset=UTF-8");

$conexao = mysql_connect('localhost', 'root', 'pass');
mysql_select_db('pan-tactics');

$nome   = $_POST['nome'];

$nome = utf8_encode($nome);

$sql = "INSERT INTO personagens VALUES";
$sql .= "('$nome')";

$resultado = mysql_query($sql);

echo 'Personagem criado com sucesso.';

mysql_close($conexao);

?>

请记住,排序规则与字符集不同。您需要将数据库和表设置为UTF-8编码。这可以通过运行此SQL命令来完成(只需执行一次)

此外,您应该将
mysql.*
连接设置为UFT-8。此代码应在连接到数据库后直接放置

mysql_set_charset("utf8");
我看到您已经将PHP
头设置为UTF-8,这很好

请记住,
mysql.*
函数的使用已被弃用,不再维护;出于安全原因,您应该切换到PDO或MySQLi


如果这两个步骤对您都没有帮助,您可能需要将文档本身保存为UTF-8 w/o BOM,这可以在Notepad++as Format->Convert to UFT-8 w/o BOM中完成。

将您与数据库的连接设置为UTF-8:


你应该使用mysqli_uu函数或PDP,而不是mysql_uu函数

检查数据库的排序规则(包括列和表)。
另外,尝试添加
mysql\u查询(“设置名称'utf8'”)在您的代码中连接到数据库后。

您是否希望名字是
João
?如果是的话,你有“莫吉贝克”


JoÃo
甚至更糟——看起来你用mojibake
João
得到了
JoÃo
,然后用mojibake得到了
JoÃo

很高兴能帮上忙!但是请记住,应用程序和脚本的所有方面都应该设置为相同的字符集,因此执行上述所有操作肯定不会有什么坏处!
mysql_set_charset("utf8");