gpt4 book ai didi

php - 如何使用 jquery $.post 确保以 UTF8 格式提交的变量

转载 作者:可可西里 更新时间:2023-11-01 06:49:12 24 4
gpt4 key购买 nike

我已经为此苦苦挣扎了三天,这就是我所得到的,我不明白为什么我会看到这种行为。

我的问题是我有一个 MySql 西类牙语数据库,其字符集和排序规则定义为 utf8_general_ci。当我像这样查询 delete.php 中的数据库时 "DELETE FROM countryNames WHERE country = '$name'"

指定的行不会被删除。我通过 post 变量 $name=$_post['data'] 在 delete.php 中设置变量 $name。大多数 $name 获取西类牙字符的值,例如 español、México 等。从 main.php 调用 delete.php 文件。如果我从 main.php $.post("delete.php", {data:filename}); ,查询不会删除条目(尽管 'filename' 字符串是 utf8)但是如果我创建一个表单然后将我的数据变量发布到 main.php 中,查询就可以工作! !对我来说最大的问题是为什么我必须提交一个表格才能使查询工作?我看到的是我的数据库拒绝来自 jquery post 调用的值,但接受来自提交表单的值。 (我没有为查询工作做任何代码更改。只需通过提交表单来发布值)

最佳答案

首先,要查看用于请求的字符集,请安装 Firebug 之类的东西并检查请求/响应的“Content-Type” header 。它看起来像'application/json;字符集=...'。在您的情况下,这应该是 charset=utf-8

我猜为什么它在发布表单时起作用可能是因为 x-www-form-urlencoded - 非字母数字字符在客户端额外编码,并在服务器端再次解码,这与直接发布数据不同。

这意味着某处有错误的编码在起作用。默认情况下,PHP 将您的字符串视为与其编码无关的字符串,因此我倾向于将其排除在错误来源之外。 jQuery.post 也默认使用 UTF-8...所以我怀疑是 filename 变量。你确定它是UTF-8吗?您在哪里以及如何检索它?

您可能还应该确保实际的 HTML 页面也以 UTF-8 格式发送,而不是 iso-8859-1。看看这个article以获得有关如何正确使用它的详尽解释。

关于php - 如何使用 jquery $.post 确保以 UTF8 格式提交的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7177463/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com