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