178 lines
4 KiB
PHP
178 lines
4 KiB
PHP
<?php
|
|
/**
|
|
* decode/cp1251.php
|
|
*
|
|
* Copyright (c) 2003-2004 The SquirrelMail Project Team
|
|
* Licensed under the GNU GPL. For full terms see the file COPYING.
|
|
*
|
|
* This file contains cp1251 decoding function that is needed to read
|
|
* cp1251 encoded mails in non-cp1251 locale.
|
|
*
|
|
* Original data taken from:
|
|
* ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1250.TXT
|
|
*
|
|
* Name: cp1251 to Unicode table
|
|
* Unicode version: 2.0
|
|
* Table version: 2.01
|
|
* Table format: Format A
|
|
* Date: 04/15/98
|
|
* Contact: cpxlate@microsoft.com
|
|
*
|
|
* @version $Id$
|
|
* @package squirrelmail
|
|
* @subpackage decode
|
|
*/
|
|
|
|
/**
|
|
* Decode cp1251-encoded string
|
|
* @param string $string Encoded string
|
|
* @return string $string Decoded string
|
|
*/
|
|
function charset_decode_cp1251 ($string) {
|
|
global $default_charset;
|
|
|
|
if (strtolower($default_charset) == 'windows-1251')
|
|
return $string;
|
|
|
|
/* Only do the slow convert if there are 8-bit characters */
|
|
/* avoid using 0xA0 (\240) in ereg ranges. RH73 does not like that */
|
|
if (! ereg("[\200-\237]", $string) and ! ereg("[\241-\377]", $string) )
|
|
return $string;
|
|
|
|
$cp1251 = array(
|
|
"\x80" => 'Ђ',
|
|
"\x81" => 'Ѓ',
|
|
"\x82" => '‚',
|
|
"\x83" => 'ѓ',
|
|
"\x84" => '„',
|
|
"\x85" => '…',
|
|
"\x86" => '†',
|
|
"\x87" => '‡',
|
|
"\x88" => '€',
|
|
"\x89" => '‰',
|
|
"\x8A" => 'Љ',
|
|
"\x8B" => '‹',
|
|
"\x8C" => 'Њ',
|
|
"\x8D" => 'Ќ',
|
|
"\x8E" => 'Ћ',
|
|
"\x8F" => 'Џ',
|
|
"\x90" => 'ђ',
|
|
"\x91" => '‘',
|
|
"\x92" => '’',
|
|
"\x93" => '“',
|
|
"\x94" => '”',
|
|
"\x95" => '•',
|
|
"\x96" => '–',
|
|
"\x97" => '—',
|
|
"\x98" => '�',
|
|
"\x99" => '™',
|
|
"\x9A" => 'љ',
|
|
"\x9B" => '›',
|
|
"\x9C" => 'њ',
|
|
"\x9D" => 'ќ',
|
|
"\x9E" => 'ћ',
|
|
"\x9F" => 'џ',
|
|
"\xA0" => ' ',
|
|
"\xA1" => 'Ў',
|
|
"\xA2" => 'ў',
|
|
"\xA3" => 'Ј',
|
|
"\xA4" => '¤',
|
|
"\xA5" => 'Ґ',
|
|
"\xA6" => '¦',
|
|
"\xA7" => '§',
|
|
"\xA8" => 'Ё',
|
|
"\xA9" => '©',
|
|
"\xAA" => 'Є',
|
|
"\xAB" => '«',
|
|
"\xAC" => '¬',
|
|
"\xAD" => '­',
|
|
"\xAE" => '®',
|
|
"\xAF" => 'Ї',
|
|
"\xB0" => '°',
|
|
"\xB1" => '±',
|
|
"\xB2" => 'І',
|
|
"\xB3" => 'і',
|
|
"\xB4" => 'ґ',
|
|
"\xB5" => 'µ',
|
|
"\xB6" => '¶',
|
|
"\xB7" => '·',
|
|
"\xB8" => 'ё',
|
|
"\xB9" => '№',
|
|
"\xBA" => 'є',
|
|
"\xBB" => '»',
|
|
"\xBC" => 'ј',
|
|
"\xBD" => 'Ѕ',
|
|
"\xBE" => 'ѕ',
|
|
"\xBF" => 'ї',
|
|
"\xC0" => 'А',
|
|
"\xC1" => 'Б',
|
|
"\xC2" => 'В',
|
|
"\xC3" => 'Г',
|
|
"\xC4" => 'Д',
|
|
"\xC5" => 'Е',
|
|
"\xC6" => 'Ж',
|
|
"\xC7" => 'З',
|
|
"\xC8" => 'И',
|
|
"\xC9" => 'Й',
|
|
"\xCA" => 'К',
|
|
"\xCB" => 'Л',
|
|
"\xCC" => 'М',
|
|
"\xCD" => 'Н',
|
|
"\xCE" => 'О',
|
|
"\xCF" => 'П',
|
|
"\xD0" => 'Р',
|
|
"\xD1" => 'С',
|
|
"\xD2" => 'Т',
|
|
"\xD3" => 'У',
|
|
"\xD4" => 'Ф',
|
|
"\xD5" => 'Х',
|
|
"\xD6" => 'Ц',
|
|
"\xD7" => 'Ч',
|
|
"\xD8" => 'Ш',
|
|
"\xD9" => 'Щ',
|
|
"\xDA" => 'Ъ',
|
|
"\xDB" => 'Ы',
|
|
"\xDC" => 'Ь',
|
|
"\xDD" => 'Э',
|
|
"\xDE" => 'Ю',
|
|
"\xDF" => 'Я',
|
|
"\xE0" => 'а',
|
|
"\xE1" => 'б',
|
|
"\xE2" => 'в',
|
|
"\xE3" => 'г',
|
|
"\xE4" => 'д',
|
|
"\xE5" => 'е',
|
|
"\xE6" => 'ж',
|
|
"\xE7" => 'з',
|
|
"\xE8" => 'и',
|
|
"\xE9" => 'й',
|
|
"\xEA" => 'к',
|
|
"\xEB" => 'л',
|
|
"\xEC" => 'м',
|
|
"\xED" => 'н',
|
|
"\xEE" => 'о',
|
|
"\xEF" => 'п',
|
|
"\xF0" => 'р',
|
|
"\xF1" => 'с',
|
|
"\xF2" => 'т',
|
|
"\xF3" => 'у',
|
|
"\xF4" => 'ф',
|
|
"\xF5" => 'х',
|
|
"\xF6" => 'ц',
|
|
"\xF7" => 'ч',
|
|
"\xF8" => 'ш',
|
|
"\xF9" => 'щ',
|
|
"\xFA" => 'ъ',
|
|
"\xFB" => 'ы',
|
|
"\xFC" => 'ь',
|
|
"\xFD" => 'э',
|
|
"\xFE" => 'ю',
|
|
"\xFF" => 'я'
|
|
);
|
|
|
|
$string = str_replace(array_keys($cp1251), array_values($cp1251), $string);
|
|
|
|
return $string;
|
|
}
|
|
|
|
?>
|