diff --git a/_test/tests/inc/httpclient_http.test.php b/_test/tests/inc/httpclient_http.test.php
index 387eb53aad723551ab51ca75a5911305230098b1..522f0790cdb83558437991766139c6b095b270e0 100644
--- a/_test/tests/inc/httpclient_http.test.php
+++ b/_test/tests/inc/httpclient_http.test.php
@@ -215,5 +215,55 @@ class httpclient_http_test extends DokuWikiTest {
         $data = $http->get('http://www.wikimatrix.org/cfeed/dokuwiki/-/-');
         $this->assertTrue($data !== false, $http->error);
     }
+
+    function test_postencode(){
+        $http = new HTTPClient();
+
+
+        // check simple data
+        $data = array(
+            'öä?' => 'öä?',
+            'foo' => 'bang'
+        );
+        $this->assertEquals(
+            '%C3%B6%C3%A4%3F=%C3%B6%C3%A4%3F&foo=bang',
+            $http->_postEncode($data),
+            'simple'
+        );
+
+        // check first level numeric array
+        $data = array(
+            'foo' => 'bang',
+            'ärr' => array('ö', 'b', 'c')
+        );
+        $this->assertEquals(
+            'foo=bang&%C3%A4rr%5B0%5D=%C3%B6&%C3%A4rr%5B1%5D=b&%C3%A4rr%5B2%5D=c',
+            $http->_postEncode($data),
+            'onelevelnum'
+        );
+
+        // check first level associative array
+        $data = array(
+            'foo' => 'bang',
+            'ärr' => array('ö'=>'ä', 'b' => 'c')
+        );
+        $this->assertEquals(
+            'foo=bang&%C3%A4rr%5B%C3%B6%5D=%C3%A4&%C3%A4rr%5Bb%5D=c',
+            $http->_postEncode($data),
+            'onelevelassoc'
+        );
+
+
+        // check first level associative array
+        $data = array(
+            'foo' => 'bang',
+            'ärr' => array('ö'=>'ä', 'ä' => array('ö'=>'ä'))
+        );
+        $this->assertEquals(
+            'foo=bang&%C3%A4rr%5B%C3%B6%5D=%C3%A4&%C3%A4rr%5B%C3%A4%5D%5B%C3%B6%5D=%C3%A4',
+            $http->_postEncode($data),
+            'twolevelassoc'
+        );
+    }
 }
 //Setup VIM: ex: et ts=4 :
diff --git a/inc/HTTPClient.php b/inc/HTTPClient.php
index 224b329827a7f1beb0e2d70dbd85025dabc21c6a..3964c8fbc3056e8403321111a9274b7596e3abc0 100644
--- a/inc/HTTPClient.php
+++ b/inc/HTTPClient.php
@@ -806,19 +806,7 @@ class HTTPClient {
      * @author Andreas Gohr <andi@splitbrain.org>
      */
     function _postEncode($data){
-        $url = '';
-        foreach($data as $key => $val){
-            if (is_array($val)) {
-                foreach ($val as $k => $v) {
-                    if($url) $url .= '&';
-                    $url .= urlencode($key).'['.$k.']='.urlencode($v);
-                }
-            } else {
-                if($url) $url .= '&';
-                $url .= urlencode($key).'='.urlencode($val);
-            }
-        }
-        return $url;
+        return http_build_query($data,'','&');
     }
 
     /**