From 2a0bec5ca8d6884458a5e2ced8f3a3fc52b4ea13 Mon Sep 17 00:00:00 2001 From: Julio Date: Thu, 1 Nov 2018 14:54:12 +0100 Subject: [PATCH] Use iconv if available to convert non standard ASCII (CP437) BT#15022 --- main/inc/lib/api.lib.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/main/inc/lib/api.lib.php b/main/inc/lib/api.lib.php index 7daa397232..6297213c8e 100644 --- a/main/inc/lib/api.lib.php +++ b/main/inc/lib/api.lib.php @@ -6259,8 +6259,21 @@ function api_replace_dangerous_char($filename, $treat_spaces_as_hyphens = true) $encoding = api_detect_encoding($filename); if (empty($encoding)) { $encoding = 'ASCII'; + if (!api_is_valid_ascii($filename)) { + // try iconv and try non standard ASCII a.k.a CP437 + // see BT#15022 + if (function_exists('iconv')) { + $result = iconv('CP437', 'UTF-8', $filename); + if (api_is_valid_utf8($result)) { + $filename = $result; + $encoding = 'UTF-8'; + } + } + } } + $filename = api_to_system_encoding($filename, $encoding); + $url = URLify::filter( $filename, 250,