SearchEngines.bg

Това е примерно съобщение за гост. Регистрирайте безплатен акаунт днес, за да станете потребител на SearchEngines.bg! След като влезете, ще можете да участвате в този сайт, като добавите свои собствени теми и публикации, както и да се свържете с други членове чрез вашата лична входяща кутия! Благодарим ви!

Проблем със charset-а

a4kata

New member
Значи проблемът е следният ,когато нещо в url адреса е изписано на кирилица то се преобразува на %E4%F4%E3%E4%F4 ,вместо да се покаже на кирилица както трябва . Charset-a ,който използвам е windows-1251 с utf8 нямам този проблем ,но пък с него всичко ,което е написано на кирилица ( и не само в url-a ) пак не е добре ,затова не го използвам . Въпросът ми е има ли начин да се направи ,така че когато използвам windows-1251 това ,което е на кирилица да не се преобразува в url-a ?
 
Re: Проблем със charset-а

Значи проблемът е следният ,когато нещо в url адреса е изписано на кирилица то се преобразува на %E4%F4%E3%E4%F4 ,вместо да се покаже на кирилица както трябва . Charset-a ,който използвам е windows-1251 с utf8 нямам този проблем ,но пък с него всичко ,което е написано на кирилица ( и не само в url-a ) пак не е добре ,затова не го използвам . Въпросът ми е има ли начин да се направи ,така че когато използвам windows-1251 това ,което е на кирилица да не се преобразува в url-a ?
php iconv
 
Re: Проблем със charset-а

Най-добре мини изцяло на utf-8 от тези гимнастики между utf-8 и cp1251 най-много да получиш главоболие.
 
Re: Проблем със charset-а

Код:
function convert_url($fcontents) {
    $out = $c1 = '';
    $byte2 = false;
    for ($c = 0;$c < strlen($fcontents);$c++) {
        $i = ord($fcontents[$c]);
        if ($i <= 127) {
            $out .= $fcontents[$c];
        }
        if ($byte2) {
            $new_c2 = ($c1 & 3) * 64 + ($i & 63);
            $new_c1 = ($c1 >> 2) & 5;
            $new_i = $new_c1 * 256 + $new_c2;
            if ($new_i == 1025) {
                $out_i = 168;
            } else {
                if ($new_i == 1105) {
                    $out_i = 184;
                } else {
                    $out_i = $new_i - 848;
                }
            }

            switch ($out_i){
                case 262: $out_i=179;break;
                case 182: $out_i=178;break;
                case 260: $out_i=186;break;
                case 180: $out_i=170;break;
                case 263: $out_i=191;break;
                case 183: $out_i=175;break;
                case 321: $out_i=180;break;
                case 320: $out_i=165;break;
            }
            $out .= chr($out_i);

            $byte2 = false;
        }
        if ( ( $i >> 5) == 6) {
            $c1 = $i;
            $byte2 = true;
        }
    }
    return $out;
}
пример: echo convert_url($url_address);
 
Re: Проблем със charset-а

и какъв е смисъла, като съм му дал решение без 10 реда код?
Код:
function convert_url($fcontents) {
    $out = $c1 = '';
    $byte2 = false;
    for ($c = 0;$c < strlen($fcontents);$c++) {
        $i = ord($fcontents[$c]);
        if ($i <= 127) {
            $out .= $fcontents[$c];
        }
        if ($byte2) {
            $new_c2 = ($c1 & 3) * 64 + ($i & 63);
            $new_c1 = ($c1 >> 2) & 5;
            $new_i = $new_c1 * 256 + $new_c2;
            if ($new_i == 1025) {
                $out_i = 168;
            } else {
                if ($new_i == 1105) {
                    $out_i = 184;
                } else {
                    $out_i = $new_i - 848;
                }
            }

            switch ($out_i){
                case 262: $out_i=179;break;
                case 182: $out_i=178;break;
                case 260: $out_i=186;break;
                case 180: $out_i=170;break;
                case 263: $out_i=191;break;
                case 183: $out_i=175;break;
                case 321: $out_i=180;break;
                case 320: $out_i=165;break;
            }
            $out .= chr($out_i);

            $byte2 = false;
        }
        if ( ( $i >> 5) == 6) {
            $c1 = $i;
            $byte2 = true;
        }
    }
    return $out;
}
пример: echo convert_url($url_address);
 

Горе