diff options
Diffstat (limited to 'vendor/sabre/vobject/lib/StringUtil.php')
-rw-r--r-- | vendor/sabre/vobject/lib/StringUtil.php | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/vendor/sabre/vobject/lib/StringUtil.php b/vendor/sabre/vobject/lib/StringUtil.php index b04539e4a..2333d6ab9 100644 --- a/vendor/sabre/vobject/lib/StringUtil.php +++ b/vendor/sabre/vobject/lib/StringUtil.php @@ -40,11 +40,23 @@ class StringUtil */ public static function convertToUTF8($str) { - if (!mb_check_encoding($str, 'UTF-8') && mb_check_encoding($str, 'ISO-8859-1')) { - $str = mb_convert_encoding($str, 'UTF-8', 'ISO-8859-1'); + $encoding = mb_detect_encoding($str, ['UTF-8', 'ISO-8859-1', 'WINDOWS-1252'], true); + + switch ($encoding) { + case 'ISO-8859-1': + $newStr = utf8_encode($str); + break; + /* Unreachable code. Not sure yet how we can improve this + * situation. + case 'WINDOWS-1252' : + $newStr = iconv('cp1252', 'UTF-8', $str); + break; + */ + default: + $newStr = $str; } // Removing any control characters - return preg_replace('%(?:[\x00-\x08\x0B-\x0C\x0E-\x1F\x7F])%', '', $str); + return preg_replace('%(?:[\x00-\x08\x0B-\x0C\x0E-\x1F\x7F])%', '', $newStr); } } |