Added iso-ir-111 support. one of cyrillic charsets from mozilla's list.
authortokul <tokul@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Sun, 12 Oct 2003 12:38:02 +0000 (12:38 +0000)
committertokul <tokul@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Sun, 12 Oct 2003 12:38:02 +0000 (12:38 +0000)
git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@5910 7612ce4b-ef26-0410-bec9-ea0150e637f0

functions/decode/iso-ir-111.php [new file with mode: 0644]
functions/i18n.php

diff --git a/functions/decode/iso-ir-111.php b/functions/decode/iso-ir-111.php
new file mode 100644 (file)
index 0000000..bd10ca0
--- /dev/null
@@ -0,0 +1,159 @@
+<?php
+/*
+ * decode/iso-ir-111.php
+ * $Id$
+ *
+ * Copyright (c) 2003 The SquirrelMail Project Team
+ * Licensed under the GNU GPL. For full terms see the file COPYING.
+ *
+ * This file contains iso-ir-111 decoding function that is needed to read
+ * iso-ir-111 encoded mails in non-iso-ir-111 locale.
+ * 
+ * Original data taken from:
+ *  http://crl.nmsu.edu/~mleisher/csets/ISOIR111.TXT
+ *
+ * Original ID: Id: ISOIR111.TXT,v 1.2 1999/08/23 18:34:15 mleisher Exp 
+ *   Name:             ISO IR 111/ECMA Cyrillic to Unicode 2.1 mapping table.
+ * Typed in by hand from 
+ *    http://www.fingertipsoft.com/ref/cyrillic/charsets.html
+ * Author: Mark Leisher <mleisher@crl.nmsu.edu>
+ * Date: 05 March 1998
+ *
+ * Original copyright:
+ * Copyright 1999 Computing Research Labs, New Mexico State University
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the ""Software""),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED ""AS IS"", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE COMPUTING RESEARCH LAB OR NEW MEXICO STATE UNIVERSITY BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
+ * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+function charset_decode_iso_ir_111 ($string) {
+    global $default_charset;
+
+    if (strtolower($default_charset) == 'iso-ir-111')
+        return $string;
+
+    /* Only do the slow convert if there are 8-bit characters */
+    /* there is no 0x80-0x9F letters in ISO-IR-111 */
+    if ( ! ereg("[\241-\377]", $string) )
+        return $string;
+
+    $iso_ir_111 = array(
+       "\xA0" => '&#160;',
+       "\xA1" => '&#1106;',
+       "\xA2" => '&#1107;',
+       "\xA3" => '&#1105;',
+       "\xA4" => '&#1108;',
+       "\xA5" => '&#1109;',
+       "\xA6" => '&#1110;',
+       "\xA7" => '&#1111;',
+       "\xA8" => '&#1112;',
+       "\xA9" => '&#1113;',
+       "\xAA" => '&#1114;',
+       "\xAB" => '&#1115;',
+       "\xAC" => '&#1116;',
+       "\xAD" => '&#173;',
+       "\xAE" => '&#1118;',
+       "\xAF" => '&#1119;',
+       "\xB0" => '&#8470;',
+       "\xB1" => '&#1026;',
+       "\xB2" => '&#1027;',
+       "\xB3" => '&#1025;',
+       "\xB4" => '&#1028;',
+       "\xB5" => '&#1029;',
+       "\xB6" => '&#1030;',
+       "\xB7" => '&#1031;',
+       "\xB8" => '&#1032;',
+       "\xB9" => '&#1033;',
+       "\xBA" => '&#1034;',
+       "\xBB" => '&#1035;',
+       "\xBC" => '&#1036;',
+       "\xBD" => '&#164;',
+       "\xBE" => '&#1038;',
+       "\xBF" => '&#1039;',
+       "\xC0" => '&#1102;',
+       "\xC1" => '&#1072;',
+       "\xC2" => '&#1073;',
+       "\xC3" => '&#1094;',
+       "\xC4" => '&#1076;',
+       "\xC5" => '&#1077;',
+       "\xC6" => '&#1092;',
+       "\xC7" => '&#1075;',
+       "\xC8" => '&#1093;',
+       "\xC9" => '&#1080;',
+       "\xCA" => '&#1081;',
+       "\xCB" => '&#1082;',
+       "\xCC" => '&#1083;',
+       "\xCD" => '&#1084;',
+       "\xCE" => '&#1085;',
+       "\xCF" => '&#1086;',
+       "\xD0" => '&#1087;',
+       "\xD1" => '&#1103;',
+       "\xD2" => '&#1088;',
+       "\xD3" => '&#1089;',
+       "\xD4" => '&#1090;',
+       "\xD5" => '&#1091;',
+       "\xD6" => '&#1078;',
+       "\xD7" => '&#1074;',
+       "\xD8" => '&#1100;',
+       "\xD9" => '&#1099;',
+       "\xDA" => '&#1079;',
+       "\xDB" => '&#1096;',
+       "\xDC" => '&#1101;',
+       "\xDD" => '&#1097;',
+       "\xDE" => '&#1095;',
+       "\xDF" => '&#1098;',
+       "\xE0" => '&#1070;',
+       "\xE1" => '&#1040;',
+       "\xE2" => '&#1041;',
+       "\xE3" => '&#1062;',
+       "\xE4" => '&#1044;',
+       "\xE5" => '&#1045;',
+       "\xE6" => '&#1060;',
+       "\xE7" => '&#1043;',
+       "\xE8" => '&#1061;',
+       "\xE9" => '&#1048;',
+       "\xEA" => '&#1049;',
+       "\xEB" => '&#1050;',
+       "\xEC" => '&#1051;',
+       "\xED" => '&#1052;',
+       "\xEE" => '&#1053;',
+       "\xEF" => '&#1054;',
+       "\xF0" => '&#1055;',
+       "\xF1" => '&#1071;',
+       "\xF2" => '&#1056;',
+       "\xF3" => '&#1057;',
+       "\xF4" => '&#1058;',
+       "\xF5" => '&#1059;',
+       "\xF6" => '&#1046;',
+       "\xF7" => '&#1042;',
+       "\xF8" => '&#1068;',
+       "\xF9" => '&#1067;',
+       "\xFA" => '&#1047;',
+       "\xFB" => '&#1064;',
+       "\xFC" => '&#1069;',
+       "\xFD" => '&#1065;',
+       "\xFE" => '&#1063;',
+       "\xFF" => '&#1066;'
+    );
+
+    $string = str_replace(array_keys($iso_ir_111), array_values($iso_ir_111), $string);
+
+    return $string;
+}
+
+?>
\ No newline at end of file
index 4600de33d4d3d1a85c7eb9ed5396cdeaac6e1e8a..4895301d8d3744574cc3696f2119ac458937a996 100644 (file)
@@ -187,6 +187,9 @@ function charset_decode ($charset, $string) {
     } else if ($charset == 'ibm866') {
         include_once(SM_PATH . 'functions/decode/cp866.php');
         $ret = charset_decode_cp866 ($string);
+    } else if ($charset == 'iso-ir-111') {
+        include_once(SM_PATH . 'functions/decode/iso-ir-111.php');
+        $ret = charset_decode_iso_ir_111 ($string);
     } else if ($charset == 'tis-620') {
         include_once(SM_PATH . 'functions/decode/tis620.php');
         $ret = charset_decode_tis620 ($string);