Jquery $ .post将portugese文本发送到php并将其保存到数据库

时间:2012-05-29 20:47:06

标签: php jquery ajax post

这是来自firebug的数据

action=saveOrder&name=Aprova%C3%A7%C3%A3o+dos

在服务器端我试图将其保存到数据库,名称列有整理 - utf8_general_ci

这是我的PHP脚本 1。

 $name= htmlentities(str_replace("+", " ", rawurldecode($_POST["name"])));

我也试过了 2。

 $name= html_entity_decode(str_replace("+", " ", rawurldecode($_POST["name"])));

如果您看到此链接 http://writecodeonline.com/php/ 2.件在那里工作,但是当我将它保存在数据库中时,它没有正确保存 使用最后一个代码片段,保存的值是Aprovação dos和案例1。 它保存了这个Aprovação dos

应该保存在数据库中的值是Aprovaçãodos

function saveorders()
{
  var params={};
  params.action='saveOrder';
  params.name=$("#cliente_nome").val();
  $.post('saveorders.php',params,function(data)
  {
    alert(data);
  });
}

PHP代码


 <?php

  mb_internal_encoding("UTF-8");
  include_once ("clase.php");// Database connection file
  session_start();
  $name=html_entity_decode(str_replace("+", " ", rawurldecode($_POST["name"])));
  Policy::saveOrders($name);

  ?>

任何帮助表示赞赏

3 个答案:

答案 0 :(得分:2)

在网站和数据库之间创建链接时,请将其设置为UTF-8。另外,使用ANSI作为UTF-8(没有BOM的UTF-8编码)保存您的PHP页面。确保您的数据库和表也使用UTF-8编码。将php的内部编码设置为UTF-8。

答案 1 :(得分:0)

确保文件编码(.php文件本身)是UTF-8。

此外,添加标题(&#39; Content-Type:text / html; charset = UTF-8&#39;);到你的UTF-8页面,看它是否有帮助。

答案 2 :(得分:0)

以下是我解决此问题的步骤

  1. 将数据库表的排序规则设置为utf8_general_ci
  2. 接收数据的PHP页面,将其标题设置为mb_internal_encoding(“UTF-8”);和iconv_set_encoding(“internal_encoding”,“UTF-8”); [我从上面的答案中得到了这个,我不确定要保留哪一个,要删除哪一个,我保留两个,因为它对我有用] 3.使用jquery使用escape发送数据时,这就变成了
     params.name=$("#cliente_nome").val(); 
      params.name=escape($("#cliente_nome").val()); 
  3. 服务器页面应使用rawurlencode方法 e.g
  4.  <?php
    
      mb_internal_encoding("UTF-8");
      iconv_set_encoding("internal_encoding", "UTF-8");
      include_once ("clase.php");// Database connection file
      session_start();
      $name=str_replace("+", " ", rawurldecode($_POST["name"]));
      Policy::saveOrders($name);
    
      ?>