diff --git a/inc/utf8.php b/inc/utf8.php
index f82a663e46af0904184776ac9d29a17e4dad0c32..e2c7488d89f3b4fa0320d8aeb77d76dcfffbca45 100644
--- a/inc/utf8.php
+++ b/inc/utf8.php
@@ -148,8 +148,16 @@ if(!function_exists('utf8_strlen')){
      * @param string $string
      * @return int
      */
-    function utf8_strlen($string){
-        return strlen(utf8_decode($string));
+    function utf8_strlen($string) {
+        if (function_exists('utf8_decode')) {
+            return strlen(utf8_decode($string));
+        } elseif (UTF8_MBSTRING) {
+            return mb_strlen($string, 'UTF-8');
+        } elseif (function_exists('iconv_strlen')) {
+            return iconv_strlen($string, 'UTF-8');
+        } else {
+            return strlen($string);
+        }
     }
 }