Имеется следующая задача:
Есть строка вида %D1%88%D1%83%D0%BB%D1%8C%D0%B3%D0%B8%D0%BD;
Расшифровывается, как "шульгин".
Необходимо её перекодировать в CP-1251.
Собсно, сделав по строке
urldecode() получаем таки-да, строчку в UTF-8.
А дальше?
Мой, преисполненный трудов и геморроя, путь привёл меня к следующему:
$string=str_replace('%D0','',$string);
$string=urldecode($string);
$string=utf8_decode ($string);
$string=convert_cyr_string($string,'i','w');
В результате полчаю "??Л?Г?Н".
Помогите, кто может
Здравствуйте, Toomany S., Вы писали:
TS>Имеется следующая задача:
TS>Есть строка вида %D1%88%D1%83%D0%BB%D1%8C%D0%B3%D0%B8%D0%BD;
TS>Расшифровывается, как "шульгин".
TS>Необходимо её перекодировать в CP-1251.
TS>Собсно, сделав по строке urldecode() получаем таки-да, строчку в UTF-8.
TS>В результате полчаю "??Л?Г?Н".
хххех...
function utf2win ($string) {
$utf = array( "/\xD0\xB0/", "/\xD0\xB1/", "/\xD0\xB2/", "/\xD0\xB3/",
"/\xD0\xB4/", "/\xD0\xB5/", "/\xD1\x91/", "/\xD0\xB6/",
"/\xD0\xB7/", "/\xD0\xB8/", "/\xD0\xB9/", "/\xD0\xBA/",
"/\xD0\xBB/", "/\xD0\xBC/", "/\xD0\xBD/", "/\xD0\xBE/",
"/\xD0\xBF/", "/\xD1\x80/", "/\xD1\x81/", "/\xD1\x82/",
"/\xD1\x83/", "/\xD1\x84/", "/\xD1\x85/", "/\xD1\x86/",
"/\xD1\x87/", "/\xD1\x88/", "/\xD1\x89/", "/\xD1\x8A/",
"/\xD1\x8B/", "/\xD1\x8C/", "/\xD1\x8D/", "/\xD1\x8E/",
"/\xD1\x8F/", "/\xD0\x90/", "/\xD0\x91/", "/\xD0\x92/",
"/\xD0\x93/", "/\xD0\x94/", "/\xD0\x95/", "/\xD0\x81/",
"/\xD0\x96/", "/\xD0\x97/", "/\xD0\x98/", "/\xD0\x99/",
"/\xD0\x9A/", "/\xD0\x9B/", "/\xD0\x9C/", "/\xD0\x9D/",
"/\xD0\x9E/", "/\xD0\x9F/", "/\xD0\xA0/", "/\xD0\xA1/",
"/\xD0\xA2/", "/\xD0\xA3/", "/\xD0\xA4/", "/\xD0\xA5/",
"/\xD0\xA6/", "/\xD0\xA7/", "/\xD0\xA8/", "/\xD0\xA9/",
"/\xD0\xAA/", "/\xD0\xAB/", "/\xD0\xAC/", "/\xD0\xAD/",
"/\xD0\xAE/", "/\xD0\xAF/");
$win = array( "\xE0","\xE1",
"\xE2","\xE3","\xE4","\xE5","\xB8","\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","\xC0",
"\xC1","\xC2","\xC3","\xC4","\xC5","\xA8","\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");
return preg_replace($utf, $win, $string);
}