diff --git a/link.module b/link.module
index 676811b..196d24b 100644
--- a/link.module
+++ b/link.module
@@ -453,8 +453,7 @@ function _link_sanitize(&$item, $delta, &$field, $instance, &$node) {
   // Separate out the query string if any.
   if (strpos($url, '?') !== FALSE) {
     $query = substr($url, strpos($url, '?') + 1);
-    parse_str($query, $query_array);
-    $item['query'] = $query_array;
+    $item['query'] = _link_parse_str($query);
     $url = substr($url, 0, strpos($url, '?'));
   }
 
@@ -1183,3 +1182,16 @@ function link_field_item_property_info() {
   );
   return $properties;
 }
+
+/**
+ * Parses a URL query string WITHOUT replacing dots and spaces to underscores
+ */
+function _link_parse_str($str) { 
+    $op = array(); 
+    $pairs = explode("&", $str); 
+    foreach ($pairs as $pair) { 
+        list($k, $v) = array_map("urldecode", explode("=", $pair)); 
+        $op[$k] = $v; 
+    }
+    return $op; 
+} 
