Как так кодировать?

Discussion in 'PHP' started by попугай, 2 Jun 2009.

  1. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,515
    Likes Received:
    400
    Reputations:
    196
    Что это за метод кодирования?
     
  2. POS_troi

    POS_troi Elder - Старейшина

    Joined:
    1 Dec 2006
    Messages:
    1,569
    Likes Received:
    466
    Reputations:
    108
    Это UTF8 а кодировать смотря что нужно вот для URL есть стандартная процедура
    http://ru2.php.net/manual/ru/function.urldecode.php
     
  3. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,515
    Likes Received:
    400
    Reputations:
    196
    Про обычный urlencode я знаю...

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

    login999 Elder - Старейшина

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    unicode либо из него происходящие(UTF-8, UTF-16, UTF-32), ты бы хоть ЯП указал для приличия...
    А для того чтоб в него кодировать нужно просто передать функции кодирования текст в этой кодировке, ты лучше глянь charset в сорце страницы, обычно там указана кодировка
     
    #4 login999, 2 Jun 2009
    Last edited: 2 Jun 2009
  5. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Это не 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))));
    ?>
    ЗЫ. Че-то наворотил я скобок. Наверно, можно и проще
     
  6. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,515
    Likes Received:
    400
    Reputations:
    196

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

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

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

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    попугай
    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('Привет медвед');
     
    _________________________
    1 person likes this.
  8. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    другой вариан, попроще
    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";
     
    1 person likes this.
  9. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,515
    Likes Received:
    400
    Reputations:
    196
    Всем спасибо..