
технарь
Профессионал
Сообщений: 1830
Регистрация: 12.2011

|
PHP:function cp1251_utf8($string)
{
$out = '';
for ($i = 0; $i<strlen($string); ++$i)
{
$ch = ord($string{$i});
if ($ch < 0x80)
{$out .= chr($ch);}
else
{
if ($ch >= 0xC0)
{
if ($ch < 0xF0) $out .= "\xD0".chr(0x90 + $ch - 0xC0); // А-Я, а-п (A-YA, a-p)
else $out .= "\xD1".chr(0x80 + $ch - 0xF0); // р-я (r-ya)
}
else
{
switch($ch)
{
case 0xA8: $out .= "\xD0\x81"; break; // YO
case 0xB8: $out .= "\xD1\x91"; break; // yo
// belorussain and ukrainian
case 0xA1: $out .= "\xD0\x8E"; break; // Ў (U)
case 0xA2: $out .= "\xD1\x9E"; break; // ў (u)
case 0xAA: $out .= "\xD0\x84"; break; // Є (e)
case 0xAF: $out .= "\xD0\x87"; break; // Ї (I..)
case 0xB2: $out .= "\xD0\x86"; break; // I (I)
case 0xB3: $out .= "\xD1\x96"; break; // i (i)
case 0xBA: $out .= "\xD1\x94"; break; // є (e)
case 0xBF: $out .= "\xD1\x97"; break; // ї (i..)
}
}
}
}
return $out;
}
PHP:function toWindows1251($str)
{
if (is_numeric($str)) {return $str;}
if (($converted = iconv('UTF-8', 'Windows-1251//IGNORE', $str)) !== false) {return $converted;}
static $utfToWin = array('Рђ'=>'А', 'Р‘'=>'Б', 'Р’'=>'В', 'Р“'=>'Г', 'Р”'=>'Д', 'Р•'=>'Е', 'РЃ'=>'Ё', 'Р–'=>'Ж', 'Р—'=>'З', 'Р?'=>'И', 'Р™'=>'Й', 'Рљ'=>'К', 'Р›'=>'Л',
'Рњ'=>'М', 'Рќ'=>'Н', 'Рћ'=>'О', 'Рџ'=>'П', 'Р '=>'Р', 'РЎ'=>'С', 'Рў'=>'Т', 'РЈ'=>'У', 'Р¤'=>'Ф', 'РҐ'=>'Х', 'Р¦'=>'Ц', 'Р§'=>'Ч', 'РЁ'=>'Ш',
'Р©'=>'Щ', 'РЄ'=>'Ъ', 'Р«'=>'Ы', 'Р¬'=>'Ь', 'Р'=>'Э', 'Р®'=>'Ю', 'РЇ'=>'Я', 'Р†'=>'І', 'РЋ'=>'Ў', 'Тђ'=>'Ґ', 'Р„'=>'Є', 'Р‡'=>'Ї', 'Р°'=>'а',
'Р±'=>'б', 'РІ'=>'в', 'Рі'=>'г', 'Рґ'=>'д', 'Рµ'=>'е', 'С‘'=>'ё', 'Р¶'=>'ж', 'Р·'=>'з', 'Рё'=>'и', 'Р№'=>'й', 'Рє'=>'к', 'Р»'=>'л', 'Рј'=>'м',
'РЅ'=>'н', 'Рѕ'=>'о', 'Рї'=>'п', 'СЂ'=>'р', 'СЃ'=>'с', 'С‚'=>'т', 'Сѓ'=>'у', 'С„'=>'ф', 'С…'=>'х', 'С†'=>'ц', 'С‡'=>'ч', 'С€'=>'ш', 'С‰'=>'щ',
'СЉ'=>'ъ', 'С‹'=>'ы', 'СЊ'=>'ь', 'СЌ'=>'э', 'СЋ'=>'ю', 'СЏ'=>'я', 'С–'=>'і', 'Сћ'=>'ў', 'Т‘'=>'ґ', 'С”'=>'є', 'С—'=>'ї');
return strtr($str, $utfToWin);
}
PHP:function toUtf8($str)
{
if (is_numeric($str)) {return $str;}
if (($converted = iconv('Windows-1251', 'UTF-8', $str)) === false)
{
static $winToUtf = array('А'=>'Рђ', 'Б'=>'Р‘', 'В'=>'Р’', 'Г'=>'Р“', 'Д'=>'Р”', 'Е'=>'Р•', 'Ё'=>'РЃ', 'Ж'=>'Р–', 'З'=>'Р—', 'И'=>'Р?', 'Й'=>'Р™', 'К'=>'Рљ', 'Л'=>'Р›',
'М'=>'Рњ', 'Н'=>'Рќ', 'О'=>'Рћ', 'П'=>'Рџ', 'Р'=>'Р ', 'С'=>'РЎ', 'Т'=>'Рў', 'У'=>'РЈ', 'Ф'=>'Р¤', 'Х'=>'РҐ', 'Ц'=>'Р¦', 'Ч'=>'Р§', 'Ш'=>'РЁ',
'Щ'=>'Р©', 'Ъ'=>'РЄ', 'Ы'=>'Р«', 'Ь'=>'Р¬', 'Э'=>'Р', 'Ю'=>'Р®', 'Я'=>'РЇ', 'І'=>'Р†', 'Ў'=>'РЋ', 'Ґ'=>'Тђ', 'Є'=>'Р„', 'Ї'=>'Р‡', 'а'=>'Р°',
'б'=>'Р±', 'в'=>'РІ', 'г'=>'Рі', 'д'=>'Рґ', 'е'=>'Рµ', 'ё'=>'С‘', 'ж'=>'Р¶', 'з'=>'Р·', 'и'=>'Рё', 'й'=>'Р№', 'к'=>'Рє', 'л'=>'Р»', 'м'=>'Рј',
'н'=>'РЅ', 'о'=>'Рѕ', 'п'=>'Рї', 'р'=>'СЂ', 'с'=>'СЃ', 'т'=>'С‚', 'у'=>'Сѓ', 'ф'=>'С„', 'х'=>'С…', 'ц'=>'С†', 'ч'=>'С‡', 'ш'=>'С€', 'щ'=>'С‰',
'ъ'=>'СЉ', 'ы'=>'С‹', 'ь'=>'СЊ', 'э'=>'СЌ', 'ю'=>'СЋ', 'я'=>'СЏ', 'і'=>'С–', 'ў'=>'Сћ', 'ґ'=>'Т‘', 'є'=>'С”', 'ї'=>'С—');
$converted = strtr($str, $winToUtf);
}
return $converted;
} |