Просмотр полной версии : Как так кодировать?
%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
Про обычный urlencode я знаю...
Но тут то 4 символа, а не 2...
login999
02.06.2009, 22:52
unicode либо из него происходящие(UTF-8, UTF-16, UTF-32), ты бы хоть ЯП указал для приличия...
А для того чтоб в него кодировать нужно просто передать функции кодирования текст в этой кодировке, ты лучше глянь charset в сорце страницы, обычно там указана кодировка
Это не 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))));
?>
ЗЫ. Че-то наворотил я скобок. Наверно, можно и проще
unicode либо из него происходящие(UTF-8, UTF-16, UTF-32), ты бы хоть ЯП указал для приличия...
А для того чтоб в него кодировать нужно просто передать функции кодирования текст в этой кодировке, ты лучше глянь charset в сорце страницы, обычно там указана кодировка
Да, это UTF-8 видать... ЯП - php.
Мне нужен алгоритм такого кодирования...
Стандартная urlencode() кодирует по другому немного - там два символа после знака процента - а в этом случае - четыре.
попугай 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('Привет медвед');
другой вариан, попроще
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";
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot