diff --git a/core/includes/menu.inc b/core/includes/menu.inc
index d205ac0..fdf86b5 100644
--- a/core/includes/menu.inc
+++ b/core/includes/menu.inc
@@ -969,6 +969,7 @@ function _menu_link_translate(&$item, $translate = FALSE) {
  */
 function menu_item_route_access(Route $route, $href, &$map) {
   $request = Request::create('/' . $href);
+  $href = \Drupal::service('path_processor_manager')->processInbound($href, $request);
   $request->attributes->set('_system_path', $href);
   // Attempt to match this path to provide a fully built request to the
   // access checker.
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..3464cf4 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,6 +511,7 @@ 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);
+    $link_path = \Drupal::service('path_processor_manager')->processInbound($link_path, $request);
     $request->attributes->set('_system_path', $link_path);
     try {
       // Use router.dynamic instead of router, because router will call the
