diff --git a/src/utils/utf8.php b/src/utils/utf8.php --- a/src/utils/utf8.php +++ b/src/utils/utf8.php @@ -718,7 +718,20 @@ 'mbstring')); } - $result = @mb_convert_encoding($string, $to_encoding, $from_encoding); + $available_encodings = mb_list_encodings(); + foreach ($available_encodings as $enc) { + $available_encodings = + array_merge($available_encodings, mb_encoding_aliases($enc)); + } + $available_encodings = + array_change_key_case(array_fill_keys($available_encodings, true)); + $to_encoding_is_valid = + array_key_exists(strtolower($to_encoding), $available_encodings); + if ($to_encoding_is_valid) { + $result = @mb_convert_encoding($string, $to_encoding, $from_encoding); + } else { + $result = false; + } if ($result === false) { $message = error_get_last();