Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Как так кодировать? (https://forum.antichat.xyz/showthread.php?t=123350)

попугай 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 код:

<?php
  
function process ($n) {
    
$n dechex ($n);
    
$n str_repeat ('0'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

Цитата:

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


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

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

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

Gifts 02.06.2009 23:14

попугай
PHP код:

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

другой вариан, попроще
PHP код:

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

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


попугай 02.06.2009 23:24

Всем спасибо..


Время: 15:24