Case 1 and Case 2:
1. Place the attached Sitecore.Support.414259.416567.dll file in your \bin folder.
2. In the web.config file, replace the following line:
<requestParser type="Sitecore.Resources.Media.MediaRequest, Sitecore.Kernel" />
with <requestParser type="Sitecore.Support.Resources.Media.MediaRequest, Sitecore.Support.414259.416567" />
3. In the web.config file, also replace the following line: <processor type="Sitecore.Pipelines.HttpRequest.CustomHandlers, Sitecore.Kernel" />
with <processor type="Sitecore.Support.Pipelines.HttpRequest.CustomHandlers, Sitecore.Support.414259.416567" />
Case 3:
1. Open the \App_Config\Include\Sitecore.Mvc.config file.
2. Change the order of the defined processors in the <mvc.getPageItem> section as follows:
<mvc.getPageItem>
<processor type="Sitecore.Mvc.Pipelines.Response.GetPageItem.SetLanguage, Sitecore.Mvc"/>
<processor type="Sitecore.Mvc.Pipelines.Response.GetPageItem.GetFromOldContext, Sitecore.Mvc"/>
<processor type="Sitecore.Mvc.Pipelines.Response.GetPageItem.GetFromRouteValue, Sitecore.Mvc"/>
<processor type="Sitecore.Mvc.Pipelines.Response.GetPageItem.GetFromRouteUrl, Sitecore.Mvc"/>
</mvc.getPageItem>
Case 4:
Rename all the items so that their path name either contains only encoded symbols (spaces) or only non-encoded symbols (dashes). For example, Home/Sample Item Name or Home/Sample-Item/Item-Name.
Alternatley, you can change the ItemNameValidation setting in the \web.config or \App_Config\Sitecore.config files to ^[\w\*\$]([\w\-\$]*|[\w\s\$]*)(\(\d{1,}\)){0,1}$ in order to prevent users from creating the items that have both spaces and the - characters in their names.