【问题标题】:`$('#form').serialize()` messes up UTF-8 characters`$('#form').serialize()` 弄乱了 UTF-8 字符
【发布时间】:2015-09-28 01:03:33
【问题描述】:

我正在使用 AJAX 插入一个表单,我正在使用:$('#form').serialize() 获取所有输入并将其发送到 insert.php。

问题是像á 这样的字符会变成%A9 等等。

如何在发送之前防止这种情况发生,或者如何在通过 $_POST 检索它时获取正确的字符,以便将它们正确插入到我的数据库中?

编辑-----

顺便说一句:没有 AJAX 的相同表单,只是 action="POST" 到相同的 insert.php 插入正确,所以问题完全在于 serialize() 弄乱了 HTML。

【问题讨论】:

  • 不,我正在阅读它。我真的不知道如何应用它,顺便说一句,我可以轻松地将东西插入数据库。唯一的问题似乎是当我使用函数 .serialize() 但我真的没有其他方法可以插入数据库,除非我停止使用 AJAX。

标签: javascript encoding


【解决方案1】:

Jquery serialize() 序列化为 UTF-8。所以á变成了正确的UTF-8编码%c3%a1。尝试使用$_REQUEST,因为它已经按照 php 文档进行了解码。 here

【讨论】:

  • urldecode($_POST['data']) 在插入数据库之前为我解决了这个问题!
【解决方案2】:

您需要做的最后一步是在您的 PHP 文件中解码,如下所示:

$usuario=utf8_decode($_POST['nombre']);

在将数据发送到数据库之前,我习惯将 utf8_decode() 与 htmlspecialchars() 结合使用:

$nombres = utf8_decode(htmlspecialchars($_POST['nombres']));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2019-08-01
    • 2014-09-15
    • 2014-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多