-/*
- iso-8859-1 is the same as Latin 1 and is normally used
- in western europe.
- */
-function charset_decode_iso_8859_1 ($string) {
- global $default_charset;
-
- if (strtolower($default_charset) <> 'iso-8859-1') {
- /* Only do the slow convert if there are 8-bit characters */
- if (ereg("[\200-\377]", $string)) {
- $string = str_replace("\201", '', $string);
- $string = str_replace("\202", '‚', $string);
- $string = str_replace("\203", 'ƒ', $string);
- $string = str_replace("\204", '„', $string);
- $string = str_replace("\205", '…', $string);
- $string = str_replace("\206", '†', $string);
- $string = str_replace("\207", '‡', $string);
- $string = str_replace("\210", 'ˆ', $string);
- $string = str_replace("\211", '‰', $string);
- $string = str_replace("\212", 'Š', $string);
- $string = str_replace("\213", '‹', $string);
- $string = str_replace("\214", 'Œ', $string);
- $string = str_replace("\215", '', $string);
- $string = str_replace("\216", 'Ž', $string);
- $string = str_replace("\217", '', $string);
- $string = str_replace("\220", '', $string);
- $string = str_replace("\221", '‘', $string);
- $string = str_replace("\222", '’', $string);
- $string = str_replace("\223", '“', $string);
- $string = str_replace("\224", '”', $string);
- $string = str_replace("\225", '•', $string);
- $string = str_replace("\226", '–', $string);
- $string = str_replace("\227", '—', $string);
- $string = str_replace("\230", '˜', $string);
- $string = str_replace("\231", '™', $string);
- $string = str_replace("\232", 'š', $string);
- $string = str_replace("\233", '›', $string);
- $string = str_replace("\234", 'œ', $string);
- $string = str_replace("\235", '', $string);
- $string = str_replace("\236", 'ž', $string);
- $string = str_replace("\237", 'Ÿ', $string);
- $string = str_replace("\240", ' ', $string);
- $string = str_replace("\241", '¡', $string);
- $string = str_replace("\242", '¢', $string);
- $string = str_replace("\243", '£', $string);
- $string = str_replace("\244", '¤', $string);
- $string = str_replace("\245", '¥', $string);
- $string = str_replace("\246", '¦', $string);
- $string = str_replace("\247", '§', $string);
- $string = str_replace("\250", '¨', $string);
- $string = str_replace("\251", '©', $string);
- $string = str_replace("\252", 'ª', $string);
- $string = str_replace("\253", '«', $string);
- $string = str_replace("\254", '¬', $string);
- $string = str_replace("\255", '­', $string);
- $string = str_replace("\256", '®', $string);
- $string = str_replace("\257", '¯', $string);
- $string = str_replace("\260", '°', $string);
- $string = str_replace("\261", '±', $string);
- $string = str_replace("\262", '²', $string);
- $string = str_replace("\263", '³', $string);
- $string = str_replace("\264", '´', $string);
- $string = str_replace("\265", 'µ', $string);
- $string = str_replace("\266", '¶', $string);
- $string = str_replace("\267", '·', $string);
- $string = str_replace("\270", '¸', $string);
- $string = str_replace("\271", '¹', $string);
- $string = str_replace("\272", 'º', $string);
- $string = str_replace("\273", '»', $string);
- $string = str_replace("\274", '¼', $string);
- $string = str_replace("\275", '½', $string);
- $string = str_replace("\276", '¾', $string);
- $string = str_replace("\277", '¿', $string);
- $string = str_replace("\300", 'À', $string);
- $string = str_replace("\301", 'Á', $string);
- $string = str_replace("\302", 'Â', $string);
- $string = str_replace("\303", 'Ã', $string);
- $string = str_replace("\304", 'Ä', $string);
- $string = str_replace("\305", 'Å', $string);
- $string = str_replace("\306", 'Æ', $string);
- $string = str_replace("\307", 'Ç', $string);
- $string = str_replace("\310", 'È', $string);
- $string = str_replace("\311", 'É', $string);
- $string = str_replace("\312", 'Ê', $string);
- $string = str_replace("\313", 'Ë', $string);
- $string = str_replace("\314", 'Ì', $string);
- $string = str_replace("\315", 'Í', $string);
- $string = str_replace("\316", 'Î', $string);
- $string = str_replace("\317", 'Ï', $string);
- $string = str_replace("\320", 'Ð', $string);
- $string = str_replace("\321", 'Ñ', $string);
- $string = str_replace("\322", 'Ò', $string);
- $string = str_replace("\323", 'Ó', $string);
- $string = str_replace("\324", 'Ô', $string);
- $string = str_replace("\325", 'Õ', $string);
- $string = str_replace("\326", 'Ö', $string);
- $string = str_replace("\327", '×', $string);
- $string = str_replace("\330", 'Ø', $string);
- $string = str_replace("\331", 'Ù', $string);
- $string = str_replace("\332", 'Ú', $string);
- $string = str_replace("\333", 'Û', $string);
- $string = str_replace("\334", 'Ü', $string);
- $string = str_replace("\335", 'Ý', $string);
- $string = str_replace("\336", 'Þ', $string);
- $string = str_replace("\337", 'ß', $string);
- $string = str_replace("\340", 'à', $string);
- $string = str_replace("\341", 'á', $string);
- $string = str_replace("\342", 'â', $string);
- $string = str_replace("\343", 'ã', $string);
- $string = str_replace("\344", 'ä', $string);
- $string = str_replace("\345", 'å', $string);
- $string = str_replace("\346", 'æ', $string);
- $string = str_replace("\347", 'ç', $string);
- $string = str_replace("\350", 'è', $string);
- $string = str_replace("\351", 'é', $string);
- $string = str_replace("\352", 'ê', $string);
- $string = str_replace("\353", 'ë', $string);
- $string = str_replace("\354", 'ì', $string);
- $string = str_replace("\355", 'í', $string);
- $string = str_replace("\356", 'î', $string);
- $string = str_replace("\357", 'ï', $string);
- $string = str_replace("\360", 'ð', $string);
- $string = str_replace("\361", 'ñ', $string);
- $string = str_replace("\362", 'ò', $string);
- $string = str_replace("\363", 'ó', $string);
- $string = str_replace("\364", 'ô', $string);
- $string = str_replace("\365", 'õ', $string);
- $string = str_replace("\366", 'ö', $string);
- $string = str_replace("\367", '÷', $string);
- $string = str_replace("\370", 'ø', $string);
- $string = str_replace("\371", 'ù', $string);
- $string = str_replace("\372", 'ú', $string);
- $string = str_replace("\373", 'û', $string);
- $string = str_replace("\374", 'ü', $string);
- $string = str_replace("\375", 'ý', $string);
- $string = str_replace("\376", 'þ', $string);
- $string = str_replace("\377", 'ÿ', $string);
- }
- }
-
- return ($string);
-}
-
-/* iso-8859-2 is used for some eastern European languages */
-function charset_decode_iso_8859_2 ($string) {
- global $default_charset;
-
- if (strtolower($default_charset) == 'iso-8859-2')
- return $string;
-
- /* Only do the slow convert if there are 8-bit characters */
- if (! ereg("[\200-\377]", $string))
- return $string;
-
- /* NO-BREAK SPACE */
- $string = str_replace("\240", ' ', $string);
- /* LATIN CAPITAL LETTER A WITH OGONEK */
- $string = str_replace("\241", 'Ą', $string);
- /* BREVE */
- $string = str_replace("\242", '˘', $string);
- // LATIN CAPITAL LETTER L WITH STROKE
- $string = str_replace("\243", 'Ł', $string);
- // CURRENCY SIGN
- $string = str_replace("\244", '¤', $string);
- // LATIN CAPITAL LETTER L WITH CARON
- $string = str_replace("\245", 'Ľ', $string);
- // LATIN CAPITAL LETTER S WITH ACUTE
- $string = str_replace("\246", 'Ś', $string);
- // SECTION SIGN
- $string = str_replace("\247", '§', $string);
- // DIAERESIS
- $string = str_replace("\250", '¨', $string);
- // LATIN CAPITAL LETTER S WITH CARON
- $string = str_replace("\251", 'Š', $string);
- // LATIN CAPITAL LETTER S WITH CEDILLA
- $string = str_replace("\252", 'Ş', $string);
- // LATIN CAPITAL LETTER T WITH CARON
- $string = str_replace("\253", 'Ť', $string);
- // LATIN CAPITAL LETTER Z WITH ACUTE
- $string = str_replace("\254", 'Ź', $string);
- // SOFT HYPHEN
- $string = str_replace("\255", '­', $string);
- // LATIN CAPITAL LETTER Z WITH CARON
- $string = str_replace("\256", 'Ž', $string);
- // LATIN CAPITAL LETTER Z WITH DOT ABOVE
- $string = str_replace("\257", 'Ż', $string);
- // DEGREE SIGN
- $string = str_replace("\260", '°', $string);
- // LATIN SMALL LETTER A WITH OGONEK
- $string = str_replace("\261", 'ą', $string);
- // OGONEK
- $string = str_replace("\262", '˛', $string);
- // LATIN SMALL LETTER L WITH STROKE
- $string = str_replace("\263", 'ł', $string);
- // ACUTE ACCENT
- $string = str_replace("\264", '´', $string);
- // LATIN SMALL LETTER L WITH CARON
- $string = str_replace("\265", 'ľ', $string);
- // LATIN SMALL LETTER S WITH ACUTE
- $string = str_replace("\266", 'ś', $string);
- // CARON
- $string = str_replace("\267", 'ˇ', $string);
- // CEDILLA
- $string = str_replace("\270", '¸', $string);
- // LATIN SMALL LETTER S WITH CARON
- $string = str_replace("\271", 'š', $string);
- // LATIN SMALL LETTER S WITH CEDILLA
- $string = str_replace("\272", 'ş', $string);
- // LATIN SMALL LETTER T WITH CARON
- $string = str_replace("\273", 'ť', $string);
- // LATIN SMALL LETTER Z WITH ACUTE
- $string = str_replace("\274", 'ź', $string);
- // DOUBLE ACUTE ACCENT
- $string = str_replace("\275", '˝', $string);
- // LATIN SMALL LETTER Z WITH CARON
- $string = str_replace("\276", 'ž', $string);
- // LATIN SMALL LETTER Z WITH DOT ABOVE
- $string = str_replace("\277", 'ż', $string);
- // LATIN CAPITAL LETTER R WITH ACUTE
- $string = str_replace("\300", 'Ŕ', $string);
- // LATIN CAPITAL LETTER A WITH ACUTE
- $string = str_replace("\301", 'Á', $string);
- // LATIN CAPITAL LETTER A WITH CIRCUMFLEX
- $string = str_replace("\302", 'Â', $string);
- // LATIN CAPITAL LETTER A WITH BREVE
- $string = str_replace("\303", 'Ă', $string);
- // LATIN CAPITAL LETTER A WITH DIAERESIS
- $string = str_replace("\304", 'Ä', $string);
- // LATIN CAPITAL LETTER L WITH ACUTE
- $string = str_replace("\305", 'Ĺ', $string);
- // LATIN CAPITAL LETTER C WITH ACUTE
- $string = str_replace("\306", 'Ć', $string);
- // LATIN CAPITAL LETTER C WITH CEDILLA
- $string = str_replace("\307", 'Ç', $string);
- // LATIN CAPITAL LETTER C WITH CARON
- $string = str_replace("\310", 'Č', $string);
- // LATIN CAPITAL LETTER E WITH ACUTE
- $string = str_replace("\311", 'É', $string);
- // LATIN CAPITAL LETTER E WITH OGONEK
- $string = str_replace("\312", 'Ę', $string);
- // LATIN CAPITAL LETTER E WITH DIAERESIS
- $string = str_replace("\313", 'Ë', $string);
- // LATIN CAPITAL LETTER E WITH CARON
- $string = str_replace("\314", 'Ě', $string);
- // LATIN CAPITAL LETTER I WITH ACUTE
- $string = str_replace("\315", 'Í', $string);
- // LATIN CAPITAL LETTER I WITH CIRCUMFLEX
- $string = str_replace("\316", 'Î', $string);
- // LATIN CAPITAL LETTER D WITH CARON
- $string = str_replace("\317", 'Ď', $string);
- // LATIN CAPITAL LETTER D WITH STROKE
- $string = str_replace("\320", 'Đ', $string);
- // LATIN CAPITAL LETTER N WITH ACUTE
- $string = str_replace("\321", 'Ń', $string);
- // LATIN CAPITAL LETTER N WITH CARON
- $string = str_replace("\322", 'Ň', $string);
- // LATIN CAPITAL LETTER O WITH ACUTE
- $string = str_replace("\323", 'Ó', $string);
- // LATIN CAPITAL LETTER O WITH CIRCUMFLEX
- $string = str_replace("\324", 'Ô', $string);
- // LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
- $string = str_replace("\325", 'Ő', $string);
- // LATIN CAPITAL LETTER O WITH DIAERESIS
- $string = str_replace("\326", 'Ö', $string);
- // MULTIPLICATION SIGN
- $string = str_replace("\327", '×', $string);
- // LATIN CAPITAL LETTER R WITH CARON
- $string = str_replace("\330", 'Ř', $string);
- // LATIN CAPITAL LETTER U WITH RING ABOVE
- $string = str_replace("\331", 'Ů', $string);
- // LATIN CAPITAL LETTER U WITH ACUTE
- $string = str_replace("\332", 'Ú', $string);
- // LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
- $string = str_replace("\333", 'Ű', $string);
- // LATIN CAPITAL LETTER U WITH DIAERESIS
- $string = str_replace("\334", 'Ü', $string);
- // LATIN CAPITAL LETTER Y WITH ACUTE
- $string = str_replace("\335", 'Ý', $string);
- // LATIN CAPITAL LETTER T WITH CEDILLA
- $string = str_replace("\336", 'Ţ', $string);
- // LATIN SMALL LETTER SHARP S
- $string = str_replace("\337", 'ß', $string);
- // LATIN SMALL LETTER R WITH ACUTE
- $string = str_replace("\340", 'ŕ', $string);
- // LATIN SMALL LETTER A WITH ACUTE
- $string = str_replace("\341", 'á', $string);
- // LATIN SMALL LETTER A WITH CIRCUMFLEX
- $string = str_replace("\342", 'â', $string);
- // LATIN SMALL LETTER A WITH BREVE
- $string = str_replace("\343", 'ă', $string);
- // LATIN SMALL LETTER A WITH DIAERESIS
- $string = str_replace("\344", 'ä', $string);
- // LATIN SMALL LETTER L WITH ACUTE
- $string = str_replace("\345", 'ĺ', $string);
- // LATIN SMALL LETTER C WITH ACUTE
- $string = str_replace("\346", 'ć', $string);
- // LATIN SMALL LETTER C WITH CEDILLA
- $string = str_replace("\347", 'ç', $string);
- // LATIN SMALL LETTER C WITH CARON
- $string = str_replace("\350", 'č', $string);
- // LATIN SMALL LETTER E WITH ACUTE
- $string = str_replace("\351", 'é', $string);
- // LATIN SMALL LETTER E WITH OGONEK
- $string = str_replace("\352", 'ę', $string);
- // LATIN SMALL LETTER E WITH DIAERESIS
- $string = str_replace("\353", 'ë', $string);
- // LATIN SMALL LETTER E WITH CARON
- $string = str_replace("\354", 'ě', $string);
- // LATIN SMALL LETTER I WITH ACUTE
- $string = str_replace("\355", 'í', $string);
- // LATIN SMALL LETTER I WITH CIRCUMFLEX
- $string = str_replace("\356", 'î', $string);
- // LATIN SMALL LETTER D WITH CARON
- $string = str_replace("\357", 'ď', $string);
- // LATIN SMALL LETTER D WITH STROKE
- $string = str_replace("\360", 'đ', $string);
- // LATIN SMALL LETTER N WITH ACUTE
- $string = str_replace("\361", 'ń', $string);
- // LATIN SMALL LETTER N WITH CARON
- $string = str_replace("\362", 'ň', $string);
- // LATIN SMALL LETTER O WITH ACUTE
- $string = str_replace("\363", 'ó', $string);
- // LATIN SMALL LETTER O WITH CIRCUMFLEX
- $string = str_replace("\364", 'ô', $string);
- // LATIN SMALL LETTER O WITH DOUBLE ACUTE
- $string = str_replace("\365", 'ő', $string);
- // LATIN SMALL LETTER O WITH DIAERESIS
- $string = str_replace("\366", 'ö', $string);
- // DIVISION SIGN
- $string = str_replace("\367", '÷', $string);
- // LATIN SMALL LETTER R WITH CARON
- $string = str_replace("\370", 'ř', $string);
- // LATIN SMALL LETTER U WITH RING ABOVE
- $string = str_replace("\371", 'ů', $string);
- // LATIN SMALL LETTER U WITH ACUTE
- $string = str_replace("\372", 'ú', $string);
- // LATIN SMALL LETTER U WITH DOUBLE ACUTE
- $string = str_replace("\373", 'ű', $string);
- // LATIN SMALL LETTER U WITH DIAERESIS
- $string = str_replace("\374", 'ü', $string);
- // LATIN SMALL LETTER Y WITH ACUTE
- $string = str_replace("\375", 'ý', $string);
- // LATIN SMALL LETTER T WITH CEDILLA
- $string = str_replace("\376", 'ţ', $string);
- // DOT ABOVE
- $string = str_replace("\377", '˙', $string);
-
- return $string;
-}
-
-/*
- iso-8859-4 is Baltic codeset used in some email clients
- instead of iso-8859-13 in Lithuania
- only Lithuanian charactes are added.
-*/
-
-function charset_decode_iso_8859_4 ($string) {
- // latin capital a with ogonek
- $string = str_replace ("\241", 'Ą', $string);
- // latin capital c with caron
- $string = str_replace ("\310", 'Č', $string);
- // latin capital e with ogonek
- $string = str_replace ("\312", 'Ę', $string);
- // latin capital e with dot above
- $string = str_replace ("\314", 'Ė', $string);
- // latin capital i with ogonek
- $string = str_replace ("\307", 'Į', $string);
- // latin capital s with caron
- $string = str_replace ("\251", 'Š', $string);
- // latin capital u with ogonek
- $string = str_replace ("\331", 'Ų', $string);
- // latin capital u with macron
- $string = str_replace ("\336", 'Ū', $string);
- // latin capital z with caron
- $string = str_replace ("\256", 'Ž', $string);
- // latin small a with ogonek
- $string = str_replace ("\261", 'ą', $string);
- // latin small c with caron
- $string = str_replace ("\350", 'č', $string);
- // latin small e with ogonek
- $string = str_replace ("\352", 'ę', $string);
- // latin small e with dot above
- $string = str_replace ("\354", 'ė', $string);
- // latin small i with ogonek
- $string = str_replace ("\347", 'į', $string);
- // latin small s with caron
- $string = str_replace ("\271", 'š', $string);
- // latin small u with ogonek
- $string = str_replace ("\371", 'ų', $string);
- // latin small u with macron
- $string = str_replace ("\376", 'ū', $string);
- // latin small z with caron
- $string = str_replace ("\276", 'ž', $string);
-
- return (charset_decode_iso_8859_1($string));
-}
-
-/* iso-8859-7 is Greek. */
-function charset_decode_iso_8859_7 ($string) {
- global $default_charset;
-
- if (strtolower($default_charset) == 'iso-8859-7') {
- return $string;
- }
-
- /* Only do the slow convert if there are 8-bit characters */
- if (!ereg("[\200-\377]", $string)) {
- return $string;
- }
-
- /* Some diverse characters in the beginning */
- $string = str_replace("\240", ' ', $string);
- $string = str_replace("\241", '‘', $string);
- $string = str_replace("\242", '’', $string);
- $string = str_replace("\243", '£', $string);
- $string = str_replace("\246", '¦', $string);
- $string = str_replace("\247", '§', $string);
- $string = str_replace("\250", '¨', $string);
- $string = str_replace("\251", '©', $string);
- $string = str_replace("\253", '«', $string);
- $string = str_replace("\254", '¬', $string);
- $string = str_replace("\255", '­', $string);
- $string = str_replace("\257", '―', $string);
- $string = str_replace("\260", '°', $string);
- $string = str_replace("\261", '±', $string);
- $string = str_replace("\262", '²', $string);
- $string = str_replace("\263", '³', $string);
-
- /* Horizontal bar (parentheki pavla) */
- $string = str_replace ("\257", '―', $string);
-
- /*
- * ISO-8859-7 characters from 11/04 (0xB4) to 11/06 (0xB6)
- * These are Unicode 900-902
- */
- $string = preg_replace("/([\264-\266])/e","'&#' . (ord('\\1')+720);",$string);
-
- /* 11/07 (0xB7) Middle dot is the same in iso-8859-1 */
- $string = str_replace("\267", '·', $string);
-
- /*
- * ISO-8859-7 characters from 11/08 (0xB8) to 11/10 (0xBA)
- * These are Unicode 900-902
- */
- $string = preg_replace("/([\270-\272])/e","'&#' . (ord('\\1')+720);",$string);
-
- /*
- * 11/11 (0xBB) Right angle quotation mark is the same as in
- * iso-8859-1
- */
- $string = str_replace("\273", '»', $string);
-
- /* And now the rest of the charset */
- $string = preg_replace("/([\274-\376])/e","'&#'.(ord('\\1')+720);",$string);
-
- return $string;
-}
-
-/*
- iso-8859-13 codeset used in Lithuania
- only Lithuanian charactes are added.
-*/
-
-function charset_decode_iso_8859_13 ($string) {
- // latin capital a with ogonek
- $string = str_replace ("\300", 'Ą', $string);
- // latin capital c with caron
- $string = str_replace ("\310", 'Č', $string);
- // latin capital e with ogonek
- $string = str_replace ("\306", 'Ę', $string);
- // latin capital e with dot above
- $string = str_replace ("\313", 'Ė', $string);
- // latin capital i with ogonek
- $string = str_replace ("\301", 'Į', $string);
- // latin capital s with caron
- $string = str_replace ("\320", 'Š', $string);
- // latin capital u with ogonek
- $string = str_replace ("\330", 'Ų', $string);
- // latin capital u with macron
- $string = str_replace ("\333", 'Ū', $string);
- // latin capital z with caron
- $string = str_replace ("\336", 'Ž', $string);
- // latin small a with ogonek
- $string = str_replace ("\340", 'ą', $string);
- // latin small c with caron
- $string = str_replace ("\350", 'č', $string);
- // latin small e with ogonek
- $string = str_replace ("\346", 'ę', $string);
- // latin small e with dot above
- $string = str_replace ("\353", 'ė', $string);
- // latin small i with ogonek
- $string = str_replace ("\341", 'į', $string);
- // latin small s with caron
- $string = str_replace ("\360", 'š', $string);
- // latin small u with ogonek
- $string = str_replace ("\370", 'ų', $string);
- // latin small u with macron
- $string = str_replace ("\373", 'ū', $string);
- // latin small z with caron
- $string = str_replace ("\376", 'ž', $string);
-
- return (charset_decode_iso_8859_1($string));
-}
-
-/*
- * iso-8859-15 is Latin 9 and has very much the same use as Latin 1
- * but has the Euro symbol and some characters needed for French.
- */
-function charset_decode_iso_8859_15 ($string) {
- // Euro sign
- $string = str_replace ("\244", '€', $string);
- // Latin capital letter S with caron
- $string = str_replace ("\246", 'Š', $string);
- // Latin small letter s with caron
- $string = str_replace ("\250", 'š', $string);
- // Latin capital letter Z with caron
- $string = str_replace ("\264", 'Ž', $string);
- // Latin small letter z with caron
- $string = str_replace ("\270", 'ž', $string);
- // Latin capital ligature OE
- $string = str_replace ("\274", 'Œ', $string);
- // Latin small ligature oe
- $string = str_replace ("\275", 'œ', $string);
- // Latin capital letter Y with diaeresis
- $string = str_replace ("\276", 'Ÿ', $string);
-
- return (charset_decode_iso_8859_1($string));
-}
-
-/* ISO-8859-5 is Cyrillic */
-function charset_decode_iso_8859_5 ($string) {
- // Convert to KOI8-R, then return this decoded.
- $string = convert_cyr_string($string, 'i', 'k');
- return charset_decode_koi8r($string);
-}