diff options
Diffstat (limited to 'vendor/sabre/http/lib/functions.php')
-rw-r--r-- | vendor/sabre/http/lib/functions.php | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/vendor/sabre/http/lib/functions.php b/vendor/sabre/http/lib/functions.php index d0477d943..97673da46 100644 --- a/vendor/sabre/http/lib/functions.php +++ b/vendor/sabre/http/lib/functions.php @@ -349,7 +349,7 @@ function parseMimeType(string $str): array // The quality parameter, if it appears, also marks the end of // the parameter list. Anything after the q= counts as an // 'accept extension' and could introduce new semantics in - // content-negotiation. + // content-negotation. if ('q' !== $partName) { $parameters[$partName] = $part; } else { @@ -404,9 +404,11 @@ function decodePath(string $path): string function decodePathSegment(string $path): string { $path = rawurldecode($path); + $encoding = mb_detect_encoding($path, ['UTF-8', 'ISO-8859-1']); - if (!mb_check_encoding($path, 'UTF-8') && mb_check_encoding($path, 'ISO-8859-1')) { - $path = mb_convert_encoding($path, 'UTF-8', 'ISO-8859-1'); + switch ($encoding) { + case 'ISO-8859-1': + $path = utf8_encode($path); } return $path; |