PHP&;MySQL-UTF-8编码存在问题
我有一个表单,其输入可以接受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
<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
甚至更糟——看起来你用mojibakeJoão
得到了JoÃo
,然后用mojibake得到了JoÃo很高兴能帮上忙!但是请记住,应用程序和脚本的所有方面都应该设置为相同的字符集,因此执行上述所有操作肯定不会有什么坏处!
mysql_set_charset("utf8");