diff options
author | alecpl <alec@alec.pl> | 2009-06-24 09:44:05 +0000 |
---|---|---|
committer | alecpl <alec@alec.pl> | 2009-06-24 09:44:05 +0000 |
commit | ac622998f911743630acd03197c7ee4529adcd1c (patch) | |
tree | f829049e089189030fd46c65edf8e6bef2a584fb /program/include/rcube_mdb2.php | |
parent | b32cb21a7da62ea8d3eca89789f013210aa75c83 (diff) |
- Fix non-unicode characters caching in unicode database (#1484608)
Diffstat (limited to 'program/include/rcube_mdb2.php')
-rw-r--r-- | program/include/rcube_mdb2.php | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/program/include/rcube_mdb2.php b/program/include/rcube_mdb2.php index 266550127..faf653539 100644 --- a/program/include/rcube_mdb2.php +++ b/program/include/rcube_mdb2.php @@ -557,6 +557,54 @@ class rcube_mdb2 /** + * Encodes non-UTF-8 characters in string/array/object (recursive) + * + * @param mixed Data to fix + * @return mixed Properly UTF-8 encoded data + * @access public + */ + function encode($input) + { + if (is_object($input)) { + foreach (get_object_vars($input) as $idx => $value) + $input->$idx = $this->encode($value); + return $input; + } + else if (is_array($input)) { + foreach ($input as $idx => $value) + $input[$idx] = $this->encode($value); + return $input; + } + + return utf8_encode($input); + } + + + /** + * Decodes encoded UTF-8 string/object/array (recursive) + * + * @param mixed Input data + * @return mixed Decoded data + * @access public + */ + function decode($input) + { + if (is_object($input)) { + foreach (get_object_vars($input) as $idx => $value) + $input->$idx = $this->decode($value); + return $input; + } + else if (is_array($input)) { + foreach ($input as $idx => $value) + $input[$idx] = $this->decode($value); + return $input; + } + + return utf8_decode($input); + } + + + /** * Adds a query result and returns a handle ID * * @param object Query handle |