aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/sabre/http/lib/functions.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/sabre/http/lib/functions.php')
-rw-r--r--vendor/sabre/http/lib/functions.php8
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;