diff --git a/app/code/Magento/Catalog/Helper/Product/View.php b/app/code/Magento/Catalog/Helper/Product/View.php
index 1973e8fbf09519027f1ce8e14c38b7b86177d5c0..8b38045df59d69aac367b3d30a3b6b976a10d683 100644
--- a/app/code/Magento/Catalog/Helper/Product/View.php
+++ b/app/code/Magento/Catalog/Helper/Product/View.php
@@ -116,24 +116,26 @@ class View extends \Magento\Framework\App\Helper\AbstractHelper
             $pageConfig->setPageLayout($settings->getPageLayout());
         }
 
+        $urlSafeSku = rawurlencode($product->getSku());
+
         // Load default page handles and page configurations
         if ($params && $params->getBeforeHandles()) {
             foreach ($params->getBeforeHandles() as $handle) {
                 $resultPage->addPageLayoutHandles(
-                    ['id' => $product->getId(), 'sku' => $product->getSku(), 'type' => $product->getTypeId()],
+                    ['id' => $product->getId(), 'sku' => $urlSafeSku, 'type' => $product->getTypeId()],
                     $handle
                 );
             }
         }
 
         $resultPage->addPageLayoutHandles(
-            ['id' => $product->getId(), 'sku' => $product->getSku(), 'type' => $product->getTypeId()]
+            ['id' => $product->getId(), 'sku' => $urlSafeSku, 'type' => $product->getTypeId()]
         );
 
         if ($params && $params->getAfterHandles()) {
             foreach ($params->getAfterHandles() as $handle) {
                 $resultPage->addPageLayoutHandles(
-                    ['id' => $product->getId(), 'sku' => $product->getSku(), 'type' => $product->getTypeId()],
+                    ['id' => $product->getId(), 'sku' => $urlSafeSku, 'type' => $product->getTypeId()],
                     $handle
                 );
             }
diff --git a/app/code/Magento/PageCache/Model/Observer/ProcessLayoutRenderElement.php b/app/code/Magento/PageCache/Model/Observer/ProcessLayoutRenderElement.php
index fd266341f782b1a41ce9bd366aa51dcc408eee2e..159afc6e90ed4107e4364c4ed086e38f21fbe535 100644
--- a/app/code/Magento/PageCache/Model/Observer/ProcessLayoutRenderElement.php
+++ b/app/code/Magento/PageCache/Model/Observer/ProcessLayoutRenderElement.php
@@ -37,7 +37,7 @@ class ProcessLayoutRenderElement
             'page_cache/block/esi',
             [
                 'blocks' => json_encode([$block->getNameInLayout()]),
-                'handles' => urlencode(json_encode($layout->getUpdate()->getHandles()))
+                'handles' => json_encode($layout->getUpdate()->getHandles())
             ]
         );
         return sprintf('<esi:include src="%s" />', $url);
diff --git a/app/code/Magento/Review/Controller/Product/ListAction.php b/app/code/Magento/Review/Controller/Product/ListAction.php
index 9669b04f91c7c683749aad291f3f4dacbfd05b47..9774547e52779a5de78e4053a5b8b4613cf19596 100644
--- a/app/code/Magento/Review/Controller/Product/ListAction.php
+++ b/app/code/Magento/Review/Controller/Product/ListAction.php
@@ -25,8 +25,10 @@ class ListAction extends \Magento\Review\Controller\Product
             $pageConfig->setPageLayout($product->getPageLayout());
         }
         $update = $this->_view->getLayout()->getUpdate();
+
+        $urlSafeSku = rawurlencode($product->getSku());
         $this->_view->addPageLayoutHandles(
-            ['id' => $product->getId(), 'sku' => $product->getSku(), 'type' => $product->getTypeId()]
+            ['id' => $product->getId(), 'sku' => $urlSafeSku, 'type' => $product->getTypeId()]
         );
 
         $this->_view->loadLayoutUpdates();