From d3bab52eddddc309b921a98bac0db59353bef489 Mon Sep 17 00:00:00 2001 From: tokul Date: Sun, 16 May 2004 08:43:50 +0000 Subject: [PATCH] adding charset conversion functions. utf_8.php is taken from www.php.net samples. Functions are needed if we want to mix forms.php and charset conversion in compose. git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@7465 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- functions/encode/utf_8.php | 71 ++++++++++++++++++++++++++++++++++++++ functions/i18n.php | 38 +++++++++++++++++++- 2 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 functions/encode/utf_8.php diff --git a/functions/encode/utf_8.php b/functions/encode/utf_8.php new file mode 100644 index 00000000..7a87e92b --- /dev/null +++ b/functions/encode/utf_8.php @@ -0,0 +1,71 @@ += 128 && $unicode < 2048) { + $binVal = str_pad (decbin ($unicode), 11, "0", STR_PAD_LEFT); + $binPart1 = substr ($binVal, 0, 5); + $binPart2 = substr ($binVal, 5); + + $char1 = chr (192 + bindec ($binPart1)); + $char2 = chr (128 + bindec ($binPart2)); + $utf8Substring = $char1 . $char2; + } + else if ($unicode >= 2048 && $unicode < 65536) { + $binVal = str_pad (decbin ($unicode), 16, "0", STR_PAD_LEFT); + $binPart1 = substr ($binVal, 0, 4); + $binPart2 = substr ($binVal, 4, 6); + $binPart3 = substr ($binVal, 10); + + $char1 = chr (224 + bindec ($binPart1)); + $char2 = chr (128 + bindec ($binPart2)); + $char3 = chr (128 + bindec ($binPart3)); + $utf8Substring = $char1 . $char2 . $char3; + } + else { + $binVal = str_pad (decbin ($unicode), 21, "0", STR_PAD_LEFT); + $binPart1 = substr ($binVal, 0, 3); + $binPart2 = substr ($binVal, 3, 6); + $binPart3 = substr ($binVal, 9, 6); + $binPart4 = substr ($binVal, 15); + + $char1 = chr (240 + bindec ($binPart1)); + $char2 = chr (128 + bindec ($binPart2)); + $char3 = chr (128 + bindec ($binPart3)); + $char4 = chr (128 + bindec ($binPart4)); + $utf8Substring = $char1 . $char2 . $char3 . $char4; + } + + if (strlen ($nonEntity) > 1) + $nonEntity = substr ($nonEntity, 1); // chop the first char (';') + else + $nonEntity = ''; + + $utf8Str .= $utf8Substring . $nonEntity; + } + else { + $utf8Str .= $subStr; + } + } + + return $utf8Str; +} +?> \ No newline at end of file diff --git a/functions/i18n.php b/functions/i18n.php index cbe85a37..d2dfa852 100644 --- a/functions/i18n.php +++ b/functions/i18n.php @@ -1,7 +1,7 @@