Use iconv if available to convert non standard ASCII (CP437) BT#15022

pull/2729/head
Julio 7 years ago
parent 6d230e6f23
commit 2a0bec5ca8
  1. 13
      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,

Loading…
Cancel
Save