印地文文本在网页上正确显示但在mysql数据库中错误插入

时间:2015-11-02 08:43:24

标签: javascript mysql ajax unicode utf-8

我正在使用ajax请求从客户端向服务器端发送值以使用ajax请求在mysql数据库中进行更新。价值是用印地语写的(हिन्दीमतलबजाने)。但是在客户端,当我发出警报时,我得到了如上所示的印地文文本,但是在服务器端请求被处理之后,它被插入到数据库中作为¹Â Â|Â¥Â,¤¤...如果我在我的javascript中使用request.ResponseText的警报,那么它会正确显示为हिन्दीमतलबजाने。现在再次,如果我加载页面,更新的值显示为¤Â¹ÃÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ但是之前未更新的值显示为हिन्दीमतलबजाने。

我在客户端使用

var requestDatah = "values=" +
escape(valued) +"&texts=" +
encodeURIComponent(texted);
    request1h[k].setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8;");
    request1h[k].send(requestDatah);

并在服务器端标题为php

<?php header("Content-Type: text/html; charset=utf-8");
mysqli_set_charset($con,"utf8");

请帮我解决如何在mysql中正确存储并显示?

1 个答案:

答案 0 :(得分:0)

选择utf8字符集和utf8_general_ci校对。

显然,字段的整理(你想要存储印地文文本)应该是utf8_general_ci。

要更改表格字段,请运行

 ALTER TABLE `<table_name>` CHANGE `<field_name>` `<field_name>`   VARCHAR(100) 
 CHARSET utf8 COLLATE utf8_general_ci DEFAULT '' NOT NULL;

连接到数据库后,首先运行以下语句

mysql_set_charset('utf8');

例如:

 //setting character set
 mysql_set_charset('utf8');

 //insert Hindi text
 mysql_query("INSERT INTO ....");

检索数据

 //setting character set
 mysql_set_charset('utf8');

//select Hindi text
 mysql_query("SELECT * FROM ....");

在浏览器上打印任何unicode文本(比如印地语文本)之前,您必须通过添加元标记来设置该页面的内容类型

 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

例如:

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Example Unicode</title>
   </head>

     <body>
    <?php echo $hindiText; ?>
    </body>
   </html>

更新

  mysql_query("SET CHARACTER SET utf8") has changed tomysql_set_charset('utf8'); 

这是更改charset的首选方法。建议不要使用mysql_query()来设置它(例如SET NAMES utf8)。见http://php.net/manual/en/function.mysql-set-charset.php *