2013-08-06 47 views
0

我想将我输入到textarea中的malayalam文本保存到mysql。但是,当我尝试接受表单提交中的马拉雅拉姆语内容时,它会像à'ààμ€àμÂà'¬à'-à'-à'œà'œcharacters一样返回。但是我使用了utf-8编码。谁能帮我。我已经完成的代码如下:将malayalam文本保存到数据库

<?php 
$dbLink = mysql_connect('localhost', 'root', 'root'); 
mysql_query("SET character_set_results=utf8", $dbLink); 
mysql_query("SET character_set_connection=utf8", $dbLink); 
mb_language('uni'); 
mb_internal_encoding('UTF8'); 
mysql_select_db('test',$dblink); 
mysql_query("set names 'utf8'",$dbLink); 
if(isset($_POST['txt1'])) 
{ 
$txt= $_POST['txt1']; // get the unicode text from a submit action. 
$cQry= "insert into news (news) values ('$txt')" ; 
$cresult = mysql_query($cQry,$dbLink); 
} 
?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<meta charset="utf-8" /> 
</head> 
<body> 
<input type="hidden" id="MicrosoftILITWebEmbedInfo" attachMode="optout" value=""> 
<script type="text/javascript" src="http://ilit.microsoft.com/bookmarklet/script/Malayalam.js" defer="defer"></script> 
<form action="" method="post" accept-charset="utf-8"> 
<textarea rows="10" charset="utf-8" cols="20" name="txt1"></textarea> 
<input type="submit" value="Submit"> 
</form> 
</body> 
</html> 

Thankyou提前。

+1

通过ajax发送数据(例如你的JSON数据)也必须发送UTF-8编码,所以你需要一个也在你的每个HTML页面上。 – Backtrack

+0

请不要使用旧的'mysql_'功能。改用'mysqli_'函数或PDO。 – akluth

回答

0

在代码中,我为得到的结果作出的变化是:

<?php 
// Using mysql 
$dbLink=mysql_connect('localhost', 'root', 'root') or die('Could not connect: ' .  mysql_error()); 
mysql_select_db('test') or die('Could not select database'); 
mysql_query("set names 'utf8'",$dbLink); 
if (!empty($_POST['ta'])) { 
$val= $_POST['ta']; 
$val=utf8_encode($val); 
$qry="insert into news(id,news)values ('','$val')"; 
mysql_query($qry); 
} 
$result = mysql_query("SELECT * FROM news"); 
while ($row = mysql_fetch_row($result)) { 
echo $row[1]; echo "<br>"; 
} 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<title>Test</title> 
</head> 
<body> 
<form enctype="multipart/form-data" method="post" action="index.php"> 
<textarea name="ta" rows="6" cols="6"></textarea> 
<input type="submit" /> 
</form> 
</body> 
</html> 
1
change malayalam text to unicode in backend them save to database . 

use below function, onblur event to convert text to unicode: 

function convertToHex(num) { 
var code ; 
var code2 ='' ; 
var code3 =''; 
    for (i=0;i<num.length;i++) 
    { 
    code = num.charCodeAt(i).toString(16).toUpperCase(); 
    code3 = ''; 
     for(j=0; j<4-code.length; j++) 
    { 
     code3 += '0'; 
    } 
    code2 +='%u'+ code3 +code; 
    } 
    return code2; 
} 
+0

问题是,当我尝试从textarea回显malayalam内容时,它显示为一些其他字符。 – Jenz

+0

首先在浏览器中右键点击检查源代码。 – 2013-08-06 10:10:23

+0

我可以将malayalam添加到textarea。但在插入数据库之前,它应该保持原样(在malayalam中)。但那不起作用。 – Jenz

0

只需设置数据库归档为utf8-general_ci名的排序规则。您不需要对您的PHP代码进行任何更改。