* Portions created by the Initial Developer are Copyright (C) 2006 * the Initial Developer. All Rights Reserved. * * Contributor(s): * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ class UnicodeComponent extends Object { /** * Unicode utilities. Converts and encodes characters up to 0xFFFF (65535) */ function unicode2utf($char) { if ($char < 128) { $rv = chr($char); } else if ($char < 2048) { $rv = chr(192 + (($char - ($char % 64)) / 64)); $rv .= chr(128 + ($char % 64)); } else { $rv = chr(224 + (($char - ($char % 4096)) / 4096)); $rv .= chr(128 + ((($char % 4096) - ($char % 64)) / 64)); $rv .= chr(128 + ($char % 64)); } return $rv; } function utf2unicode($char) { if (ord($char{0}) < 128) $rv = ord($char); else if (ord($char{0}) < 224) $rv = ((ord($char{0}) - 192) * 64) + (ord($char{1}) - 128); else if (ord($char{0}) < 240) $rv = ((ord($char{0}) - 224) * 4096) + ((ord($char{1}) - 128) * 64 + (ord($char{2}) - 128)); else $rv = ((ord($char{0}) - 240) * 262144) + ((ord($char{1}) - 128) * 4096) + ((ord($char{2}) - 128) * 64) + (ord($char{3}) - 128); return $rv; } }