Malayalam字体字符作为未知字符保存到mysql数据库中

时间:2014-07-24 16:26:38

标签: php mysql utf-8 mysqli

当我尝试将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中的值的想法。提前谢谢......

2 个答案:

答案 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)

您可以通过三个简单的步骤来完成此任务。

  1. 只需在数据库中将列Collat​​ion设置为“utf8_general_ci”

  2. header('Content-type:text / html; charset = UTF-8'); 在你的档案中。

    1. $ mysqli-&GT; set_charset( “UTF8”);这是在mysql连接查询之后。
    2. 这就是全部。