【问题标题】:encodeURIComponent() and UTF-8 when sending Form textarea via AJAX通过 AJAX 发送表单 textarea 时的 encodeURIComponent() 和 UTF-8
【发布时间】:2012-08-17 20:20:42
【问题描述】:

我正在通过 AJAX 方法 POST 将数据发送到 PHP 后端文件。数据来自一个文本区域,其形式具有下一个属性accept-charset="UTF-8"。 AJAX 函数以http[act].send("title=" + encodeURIComponent(field.value)...) 发送数据,我的PHP 后端文件以header('Content-Type:text/html; charset=UTF-8'); 开头。数据库接受名称和字段都设置为 UTF-8(这些东西从来没有问题)。

我想我应该在 PHP 后端解码 encodeURIComponent() 函数。但是怎么做呢?

编辑(抱歉):

Fibra Dietética 插入 DB 为 fibra dietética
Acompañada 插入为 Acompañada强>

...等等。

【问题讨论】:

  • 为什么不使用一些框架来处理 AJAX? (如果你这样做 - 它是什么?)
  • jmm... 我不会说我不喜欢框架,但我不喜欢将它们用于如此简单的事情。我应该工作。
  • ajax 在本机方式中并不简单(与使用 jQuery 等框架的 ajax 相比)......更不用说你必须处理跨浏览器问题

标签: php ajax post utf-8 encodeuricomponent


【解决方案1】:

和平缔造者是对的 在 Ajax 中,使用

encodeURIComponent()

然后在php中,使用

rawurldecode()

示例 在阿贾克斯

abc=encodeURIComponent(xxx)

然后在php中,

$varName = rawurldecode($_POST['abc'])

【讨论】:

    【解决方案2】:

    使用rawurldecode($value) 看这里http://www.php.net/manual/en/function.rawurldecode.php

    【讨论】:

    • PHP.net 说:'加号('+')被解码为空格字符'。如何保存我的加号?谢谢! :)
    • 当您获得已编码发送的数据时,您无需在从 $_POST 数组中获取数据时对其进行解码
    • @YaronUliel 是的,但是......为什么你认为它没有正确进入数据库?如果我做一个普通的 POST(没有 AJAX,没有 encodeURIComponent),它就可以工作。
    • @Kenedy 如果您阅读页面php.net/manual/en/function.rawurldecode.php 有一条评论 - 有人写了一个函数来处理这些字符
    • 它可以是很多东西,也许页面不是 utf8 编码的(文件和内容类型元数据)。也许他没有在那个 mysql 连接上发送set names 'utf8' 查询......而且很可能 - ajax 调用没有正确的content-type 标头
    【解决方案3】:

    错误。在执行 INSERT 之前,我在字符串上使用了 htmlentities() (PHP)。一个不错的选择是使用strip_tags() (PHP) 来避免“HTML/Js/...注入”。感谢大家的帮助。我希望这对某人有用。

    【讨论】:

      猜你喜欢
      • 2013-12-24
      • 1970-01-01
      • 2016-11-25
      • 1970-01-01
      • 1970-01-01
      • 2016-09-30
      • 2013-10-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多