json_encode VS chirilica (windows-1251)

Astazi am intilnit o problema, trebuia sa fac o integrare cu un alt server prin CURL si deci trebuia  sa transmit prin JSON datele mele, in PHP formez masivul si cu ajutorul functiei json_encode transform masivul in date json, totul merge bine atunci cand caracterele sunt in “latina”, intamplator am introdus date in chirilica (ФИО, ПРИМЕР, etc…) , daca fisierul este in ASCII – chirilica se transforma in NULL:

$masiv = array(
"fullname"=>"ФИО",
"birth" => array( "m"=>"июнь")
)

devine

{“fullname”:null, “birth”:{“m”:null}}

am convertat fisierul in utf-8,  functia json_encode deja incepe a lucra normal, doar ca in loc de NULL, literele se transforma in date pe 16 biti, mai bine spus UNICODE, ceva de tipul asta:

{“fullname”:”\u0412\u0438\u043e”, “birth”:{“m”:”u0442\u0440\u0430\u043b”}}

Astfel de date sunt bune in comparatie cu NULL, dar eu nu vreau ca de fiecare data sa apelez la functii suplimentare sa descifrez ce-i scris acolo, si in plus mai mult spati de memorie este alocat, mai ales cand ai nevoie de  a procesa rapid un AJAX.

Pentru a transforma datele in mod normal am folosit urmatoarea functie :

//  $postData = json_encode($postData);
$postData = preg_replace_callback(
       '/\\\u([0-9a-fA-F]{4})/',
      create_function('$match', 'return mb_convert_encoding("&#" . intval($match[1], 16) . ";", "UTF-8", "HTML-ENTITIES");'),
json_encode($postData)
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
$result = curl_exec($ch);

uite acum pot spune  ca totul merge bine:

{“fullname”:”ФИО”, “birth”:{“m”:”июнь”}}