diff --git a/core/includes/menu.inc b/core/includes/menu.inc
index d205ac0..7303d3f 100644
--- a/core/includes/menu.inc
+++ b/core/includes/menu.inc
@@ -969,7 +969,8 @@ function _menu_link_translate(&$item, $translate = FALSE) {
  */
 function menu_item_route_access(Route $route, $href, &$map) {
   $request = Request::create('/' . $href);
-  $request->attributes->set('_system_path', $href);
+  $system_path = $href = \Drupal::service('path_processor_manager')->processInbound($href, $request);
+  $request->attributes->set('_system_path', $system_path);
   // Attempt to match this path to provide a fully built request to the
   // access checker.
   try {
diff --git a/core/modules/menu_link/lib/Drupal/menu_link/Entity/MenuLink.php b/core/modules/menu_link/lib/Drupal/menu_link/Entity/MenuLink.php
index f51b585..f4a7f14 100644
--- a/core/modules/menu_link/lib/Drupal/menu_link/Entity/MenuLink.php
+++ b/core/modules/menu_link/lib/Drupal/menu_link/Entity/MenuLink.php
@@ -511,7 +511,8 @@ public function postSave(EntityStorageControllerInterface $storage_controller, $
   public static function findRouteName($link_path) {
     // Look up the route_name used for the given path.
     $request = Request::create('/' . $link_path);
-    $request->attributes->set('_system_path', $link_path);
+    $system_path = \Drupal::service('path_processor_manager')->processInbound($link_path, $request);
+    $request->attributes->set('_system_path', $system_path);
     try {
       // Use router.dynamic instead of router, because router will call the
       // legacy router which will call hook_menu() and you will get back to
