当我尝试将utf8字符插入我的mysql Web服务器数据库(表也有整理:utf8_general_ci)时,将未知的垃圾字符插入到数据库中。我正在尝试使用html文件将这个名称( ോണോണ )用malayalam语言输入到mysql db中,当这个值在文本框中提交并发送到服务器db时,它看起来像这样:(à'Ÿàμ<à'£à'¿)。我还在我的php文件中添加了这一行:
mysql_query("SET NAMES 'utf8' COLLATE 'utf8_general_ci'",$con);
但仍然没用。这个名字在马拉雅拉姆语中。但我从db得到的是未知的语言。怎么会发生?我将向您展示我的php文件和html文件:
insert.php
<?php
$con=mysqli_connect("localhost","username","password","db_name");
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$txt= $_POST['ta']; // get the unicode text from a submit action.
$unicodeText = $txt;
mysql_query("SET NAMES 'utf8' COLLATE 'utf8_general_ci'",$con);
$cQry= "insert into doc_test (unicodeText) values ('".$unicodeText."')" ;
if(!mysqli_query($con,$cQry))
{
die('Error: ' . mysqli_error($con));
}
echo "1 record added";
mysqli_close($con);
?>
这是我的html文件:
<html>
<head>
<meta charset="UTF-8" />
</head>
<body>
<form action="insert.php" method="post">
Name: <input type="text" name="ta">
<input type="submit">
</form>
</body>
</html>
当我在我的服务器上运行它并在文本框中的malayalam中输入一个值,并按下提交按钮时,该值将被插入到mysql数据库中,但它不是我在文本框中输入的值。在db中输入值后,还会显示警告。如下所示:
PHP Error Message
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /home/a6001661/public_html/malayalam/insert.php on line 9
1 record added
这个警告的可能原因是什么?有人可以纠正我。还建议在db中输入正确字体malayalam中的值的想法。提前谢谢......
答案 0 :(得分:2)
我决定将我的评论作为答案,为未来可能的读者提出并解决问题。
尝试在查询之前放置$con->set_charset("utf8");
。
这是一个在SO上为许多人工作的方法,其中遇到了类似的问题。
此外,在打开<?php
标记后,在文件顶部添加错误报告:
error_reporting(E_ALL);
ini_set('display_errors', 1);
旁注: 您目前正在使用mysql_query()
混合MySQL API。
它不会与同一代码中的mysqli_*
函数混合使用。
它需要是mysqli_query()
修改:
“成功..添加<meta charset="utf-8">
解决了我的问题”
根据以下评论。
答案 1 :(得分:1)
您可以通过三个简单的步骤来完成此任务。
只需在数据库中将列Collation设置为“utf8_general_ci”
header('Content-type:text / html; charset = UTF-8'); 在你的档案中。
和
这就是全部。