]> git.joonet.de Git - adminer.git/commitdiff
Better UTF-8 detection
authorjakubvrana <jakubvrana@7c3ca157-0c34-0410-bff1-cbf682f78f5c>
Thu, 11 Jun 2009 05:05:35 +0000 (05:05 +0000)
committerjakubvrana <jakubvrana@7c3ca157-0c34-0410-bff1-cbf682f78f5c>
Thu, 11 Jun 2009 05:05:35 +0000 (05:05 +0000)
git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@664 7c3ca157-0c34-0410-bff1-cbf682f78f5c

include/functions.inc.php
select.inc.php

index 42df67d07965537707a94fc922acf556bd454aa3..1dc3493339cc34fb9640692f6f38d35159cdaad9 100644 (file)
@@ -199,7 +199,7 @@ function select($result, $dbh2 = null) {
                                if (!isset($val)) {
                                        $val = "<i>NULL</i>";
                                } else {
-                                       if ($blobs[$key] && preg_match('~[\\x80-\\xFF]~', $val)) {
+                                       if ($blobs[$key] && !is_utf8($val)) {
                                                $val = "<i>" . lang('%d byte(s)', strlen($val)) . "</i>";
                                        } else {
                                                $val = nl2br(htmlspecialchars($val));
@@ -224,6 +224,10 @@ function select($result, $dbh2 = null) {
        $result->free();
 }
 
+function is_utf8($val) {
+       return (preg_match('~~u', $val) && !preg_match('~[\\0-\\x8\\xB\\xC\\xE-\\x1F]~', $val));
+}
+
 function shorten_utf8($string, $length) {
        preg_match("~^(.{0,$length})(.?)~su", $string, $match);
        return nl2br(htmlspecialchars($match[1])) . ($match[2] ? "<em>...</em>" : "");
index 0fab31a4731348ac8cbe1e61097d25db6cc5b61f..59556f2d84cf7d90a63c7a3749d342d58acb88e2 100644 (file)
@@ -246,7 +246,7 @@ if (!$columns) {
                                foreach ($row as $key => $val) {
                                        if (!isset($val)) {
                                                $val = "<i>NULL</i>";
-                                       } elseif (preg_match('~blob|binary~', $fields[$key]["type"]) && preg_match('~[\\0-\\x8\\xb\\xc\\xe-\\x1F\\x80-\\xFF]~', $val)) {
+                                       } elseif (preg_match('~blob|binary~', $fields[$key]["type"]) && !is_utf8($val)) {
                                                $val = '<a href="' . htmlspecialchars($SELF) . 'download=' . urlencode($_GET["select"]) . '&amp;field=' . urlencode($key) . '&amp;' . $unique_idf . '">' . lang('%d byte(s)', strlen($val)) . '</a>';
                                        } else {
                                                if (intval($text_length) > 0 && preg_match('~blob|text~', $fields[$key]["type"])) {