PDA

Просмотр полной версии : Как так кодировать?


попугай
02.06.2009, 22:30
%u041F%u043E%u0441%u043C%u043E%u0442%u0440%u0438%2 C%20%u0442%u0435%u0431%u0435%20%u043F%u043E%u043D% u0440%u0430%u0432%u0438%u0442%u0441%u044F

Что это за метод кодирования?

POS_troi
02.06.2009, 22:41
Это UTF8 а кодировать смотря что нужно вот для URL есть стандартная процедура
http://ru2.php.net/manual/ru/function.urldecode.php

попугай
02.06.2009, 22:45
Про обычный urlencode я знаю...

Но тут то 4 символа, а не 2...

login999
02.06.2009, 22:52
unicode либо из него происходящие(UTF-8, UTF-16, UTF-32), ты бы хоть ЯП указал для приличия...
А для того чтоб в него кодировать нужно просто передать функции кодирования текст в этой кодировке, ты лучше глянь charset в сорце страницы, обычно там указана кодировка

krypt3r
02.06.2009, 23:05
Это не UTF-8, а UCS-2 ака виндовс юникод. Вроде он еще именуется UTF-16LE. Расшифровать можно джаваскриптом функцией unescape
Быдло-код =)

<?php
function process ($n) {
$n = dechex ($n);
$n = str_repeat ('0', 4 - strlen ($n)) . $n;
return '%u' . $n;
}

$str = iconv ('KOI8-R', 'UCS-2', 'Посмотри, тебе понравится');
echo implode ('', (array_map ('process', unpack ('S*', $str))));
?>

ЗЫ. Че-то наворотил я скобок. Наверно, можно и проще

попугай
02.06.2009, 23:12
unicode либо из него происходящие(UTF-8, UTF-16, UTF-32), ты бы хоть ЯП указал для приличия...
А для того чтоб в него кодировать нужно просто передать функции кодирования текст в этой кодировке, ты лучше глянь charset в сорце страницы, обычно там указана кодировка


Да, это UTF-8 видать... ЯП - php.

Мне нужен алгоритм такого кодирования...

Стандартная urlencode() кодирует по другому немного - там два символа после знака процента - а в этом случае - четыре.

Gifts
02.06.2009, 23:14
попугай function utf_urlencode($str)
{
$str = iconv("utf-8", "cp1251", $str);
$res = "";
for ($i = 0; $i < strlen($str); $i++) {
$res .= "%u";
$a = iconv("cp1251", "ucs-2", $str[$i]);
for ($j = 0; $j < strlen($a); $j++) {
$n = dechex(ord($a[$j]));
if (strlen($n) == 1) {
$n = "0$n";
}
$res .= $n;
}
}
return $res;
}

echo utf_urlencode('Привет медвед');

krypt3r
02.06.2009, 23:20
другой вариан, попроще

function utf16be_urlencode ($str) {
$ret = '';
for ($i = 0; $i < mb_strlen ($str, 'UTF-16BE'); $i++)
$ret .= '%u' .bin2hex (mb_substr ($str, $i, 1, 'UTF-16BE'));
return $ret;
}

$str = iconv ('KOI8-R', 'UTF-16BE', 'Посмотри, тебе понравится');
echo utf16be_urlencode ($str), "\n";

попугай
02.06.2009, 23:24
Всем спасибо..