【发布时间】:2015-03-04 06:17:30
【问题描述】:
为了简化正在发生的事情,我尝试将字符串“Técnico”发送到 PHP,它在 $_POST var 上被视为“Técnico”。
错误仅在此项目上。我在 Apache2 上运行了另外 3 个项目(相同的 /var/www 文件夹),它们没有出现这个问题。
现在,数据的完整路径。
jQuery:
$.ajax({
url: "config/inserirCargo.php",
type: 'POST',
data: {
titulo: $("#titulo").val()
},
success: function(data) {
$("#cargo").html(data);
},
contentType: 'application/x-www-form-urlencoded; charset=UTF-8' // Tried with and without
});
jQuery 响应:
PHP:
var_dump($_POST['titulo']);
die();
我的 HTML 已经有了 meta 标签。
meta http-equiv="Content-Type" content="text/html; charset=utf-8"
我已经单独和一起尝试过这些解决方案:
- AddDefaultCharset UTF-8 - 在 .htaccess 上
- ini_set('charset', 'UTF-8'); - 在 php 文件上
- header('Content-Type: text/html; charset=utf-8'); - 在 php 文件上
- htmlentities($_POST['titulo']); - 在 php 文件上
- 标题:encodeURIComponent($("#titulo").val()) - 在 js 文件中
每次对 .htacces 进行一些更改或使用 ini_set 时,我都会执行“service apache2 restart”。
我的 PHP 版本是 5.5.3,更准确地说:
PHP 5.5.3-1ubuntu2.6 (cli)(构建时间:2014 年 7 月 7 日 16:54:32)版权所有 (c) 1997-2013 PHP Group Zend Engine v2.5.0,版权所有 (c) 1998-2013 Zend 科技 Zend OPcache v7.0.3-dev,版权所有 (c) 1999-2013,由 Zend Technologies 提供
有人可以帮我吗?
【问题讨论】:
-
我猜它在这一行被编码为 ISO-8859-1 -
titulo: $("#titulo").val() -
但是,我该如何撤消呢?使用 mb_detect_encoding($_POST['titulo']);,它返回 'UTF-8'。使用 mb_convert_encoding($_POST['titulo'], 'UTF-8');结果与以前相同:/