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?

Respuestas a la pregunta(1)

Su respuesta a la pregunta