diff --git a/src/wp-admin/includes/file.php b/src/wp-admin/includes/file.php
index bc40f3e..b262010 100644
--- a/src/wp-admin/includes/file.php
+++ b/src/wp-admin/includes/file.php
@@ -318,7 +318,7 @@ function wp_handle_upload( &$file, $overrides = false, $time = null ) {
 	if ( ! ( ( $uploads = wp_upload_dir($time) ) && false === $uploads['error'] ) )
 		return call_user_func($upload_error_handler, $file, $uploads['error'] );
 
-	$filename = wp_unique_filename( $uploads['path'], $file['name'], $unique_filename_callback );
+	$filename = wp_unique_filename( $uploads['path'], urldecode( $file['name'] ), $unique_filename_callback );
 
 	// Move the file to the uploads dir
 	$new_file = $uploads['path'] . "/$filename";
diff --git a/src/wp-admin/includes/media.php b/src/wp-admin/includes/media.php
index e5ccf1e..54eeb23 100644
--- a/src/wp-admin/includes/media.php
+++ b/src/wp-admin/includes/media.php
@@ -250,7 +250,7 @@ function media_handle_upload($file_id, $post_id, $post_data = array(), $override
 			$time = $post->post_date;
 	}
 
-	$name = $_FILES[$file_id]['name'];
+	$name = urldecode( $_FILES[$file_id]['name'] );
 	$file = wp_handle_upload($_FILES[$file_id], $overrides, $time);
 
 	if ( isset($file['error']) )
