AJAX: método post con UTF-8
Estoy tratando de enviar datos comoUTF-8
sobre Ajax, pero está cambiando algunos datos enunicode
. Lo explicaré con dos breves ejemplos:
Un POST simple (sin ajax)
<form accept-charset="UTF-8" method="POST" action="test2.php">
<input type="text" class="" name="text">
<input type="submit" class="button" value="Submit">
</form>
Los encabezados Meta y PHP siempre están configurados:
<meta charset="utf-8">
header("Content-Type: text/html; charset=utf-8");
Si presento una carta en árabe (ب
), y usestrlen()
volverá 3. Si usomb_strlen()
volverá 1. Todo esto es bueno como debería ser.
Ahora la versión Ajax. La forma, encabezados y meta son los mismos. Pero onsubmit () llama a esto ajax en Javascript:
... (initiating HttpReq)
self.xmlHttpReq.open('POST', strURL, true);
self.xmlHttpReq.setRequestHeader("charset", "utf-8");
self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
...
if (self.xmlHttpReq.readyState == 4) { ... }
Ahora la misma prueba da parastrlen()
6 y paramb_strlen()
también 6. El ب se convirtió en realidad a6%u0628
En algún lugar del proceso de Ajax ... Y esto no sucede con un normalPOST
(ejemplo uno).
¿Qué estoy olvidando / haciendo mal en el proceso Ajax?