CURL может принять массив аргументов для post, и он позаботится о кодировке для вас:
$array = (
'test' => 'test 1',
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $array);
Однако, согласно документации curl (http://php.net/curl_setopt, поиск CURLOPT_POST_FIELDS),для PHP пары должны быть в формате urlencode()
:
$post_args = urlencode('test=test 1');
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_args);