Im Falle des OP waren es offensichtlich keine Rohdaten. Denn dann wäre in aller Regel kein Dekodierfehler nach den beschriebenen Symptomen aufgetreten. Also wird er sie wohl aus $_POST abholen und an der Quelle als application/x-www-form-urlencoded (Standard-Wert für Ajax) versenden. Dabei wird er nicht beachtet haben, dass sie kodiert werden müssen. Und dann tritt das auf, was er beschrieben hat.
Ne, ich kann das beim Besten Willen nicht nachvollziehen. Da muss er schon irgenwas ganz Dummes gemacht haben, was an jeglichen Standards vorbeigegangen ist. Du kannst das gerne mal etwas näher beschreiben, falls Du den seine Probleme nachstellen konntest.
Im Übrigen:
<?php
header('Content-Type: text/plain;Charset=UTF-8');
$_POST = json_decode(file_get_contents('php://input'));
print_r($_POST);
?>
Liefert mir exakt das, was ich gesendet habe:
stdClass Object
(
[param] => stdClass Object
(
[foo] => 1
)
[arr] => Array
(
[0] => foo
[1] => bar+
[2] => baz&
)
)
EingeJSON't mit Perl:
my $hunt = {
arr => ['foo','bar+','baz&'],
param => {foo => 1}
};
my $jsonstr = to_json($hunt);
my $r = HTTPRequest->common(
host => 'rolfrost.de',
method => 'POST',
uri => '/p.php',
content => $jsonstr,
) or die $@;
print $r->response_body;
ohne dass es nur ansatzweise irgendwelche Kodierungsprobleme gibt. Du kannst das selber testen p.php ist online.