`$('#form').serialize()` messes up UTF-8 c

2020-04-16 04:07发布

I'm inserting a form with AJAX and I'm using: $('#form').serialize() to get all the input and send it to insert.php.

The problem is that characters like á become %A9 and such.

How can I prevent this from happening before sending it or how get the correct characters when I retrieve it through $_POST so I can insert them correctly to my database?

EDIT -----

Btw: Same Form with no AJAX, just action="POST" to the SAME insert.php inserts correctly, so the problem is solely with serialize() messing the HTML.

2条回答
Melony?
2楼-- · 2020-04-16 04:23

The final step you need to do is to decode in your PHP file like this:

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

I use to combine utf8_decode() with htmlspecialchars() before sending datas to the database:

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

查看更多
Fickle 薄情
3楼-- · 2020-04-16 04:28

Jquery serialize() serializes as UTF-8. So á becomes the correct UTF-8 encoding %c3%a1. Try using the $_REQUEST as that is already decoded as per the php documentation. here

查看更多
登录 后发表回答