Dans la suite de mon post précédent, expliquant comment accéder à des headers HTTP personnalisés en PHP, j'ai rencontré le problème suivant : les headers sont bien transmis pour des données "simples", mais cela ne fonctionnait pas pour des caractères spéciaux ou accentués !

Vu que mes headers sont créés lors d'une requête AJAX, via le framework Opensocial, il faut d'abord pourvoir les "encoder", ou du moins "escaper" les caractères spéciaux, en JavaScript, et pouvoir les "décoder" du côté serveur, dans mon cas en PHP.

Pour ce faire, j'utilise la fonction JavaScript encodeURIComponent() du côté client :

var customHeaders = { "x-question-name" : nameValue, "x-question-text" : textValue };

var params = {};
params[opensocial.ContentRequestParameters.HEADERS] = customHeaders;

opensocial.makeRequest(url, createQuestionCB, params);


et la fonction PHP rawurldecode() du côté serveur !

$name = rawurldecode($_SERVER["HTTP_X_QUESTION_NAME"]);
$text = rawurldecode($_SERVER["HTTP_X_QUESTION_TEXT"]);