Почему такая ерунда?

Discussion in 'PHP' started by попугай, 23 Sep 2008.

  1. попугай

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

    Joined:
    15 Jan 2008
    Messages:
    1,515
    Likes Received:
    400
    Reputations:
    196
    PHP:
    <script>
    alert(String.fromCharCode(   -248   ))
    </script>
    Выдает символ .. все корректно.. А это -

    PHP:
    <?php
    echo chr(-248);
    ?>
    Выдает квадраты


    Функции то одинаковые.... кодировки менял в браузере - не помогает..
     
    #1 попугай, 23 Sep 2008
    Last edited: 23 Sep 2008
  2. zlo12

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

    Joined:
    28 Dec 2007
    Messages:
    535
    Likes Received:
    135
    Reputations:
    34
    String не решает?)
     
  3. Zabuldon

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

    Joined:
    6 Apr 2008
    Messages:
    99
    Likes Received:
    6
    Reputations:
    0
    попробуй ковычки добавить чтобы явно указать что тип String
     
  4. попугай

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

    Joined:
    15 Jan 2008
    Messages:
    1,515
    Likes Received:
    400
    Reputations:
    196
    Какой String ?

    функция chr() принимает параметр integer
     
    1 person likes this.
  5. etc

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

    Joined:
    16 Feb 2008
    Messages:
    113
    Likes Received:
    175
    Reputations:
    1
    Вполне возможно, что дело в кодировке...
     
  6. попугай

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

    Joined:
    15 Jan 2008
    Messages:
    1,515
    Likes Received:
    400
    Reputations:
    196
    Например?
     
  7. astrologer

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

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Вообще-то, функция String.fromCharCode должна сначала приводить все переданные аргументы к беззнаковому типу, поэтому:
    Code:
    String.fromCharCode( -n ) === String.fromCharCode( n );
    Хотя некоторые реализации могут об этом забывать.

    Вероятно, в PHP такого преобразования не производится.
     
  8. попугай

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

    Joined:
    15 Jan 2008
    Messages:
    1,515
    Likes Received:
    400
    Reputations:
    196
    пробовал делать так

    PHP:
     <script
    alert(String.fromCharCode(   -248   )) 
    </script> 
    а потом так

    PHP:
     <script
    alert(String.fromCharCode(   248   )) 
    </script> 
    выдает разные значения...


    Вообще непонятно, почему, казалось бы одинаковые функции выдают разные резальты..
    String.fromCharCode( ) и chr()
     
  9. astrologer

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

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Всё же это функции двух разных языков. А какой символ с кодом -248 ты ожидал увидеть? :)
     
  10. попугай

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

    Joined:
    15 Jan 2008
    Messages:
    1,515
    Likes Received:
    400
    Reputations:
    196
    Ну разных, то разных.. но смысл один - получить символ по его коду..

    с кодом -248 скрипт на яваскрипте выдает символ "("
     
  11. astrologer

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

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Скриншоты: Opera IE FF Safari Chrome

    В принципе, не удивительно, что реализации расходятся как со стандартом, так и между собой - случай, скажем так, "на грани" - кому может понадобиться использовать именно отрицательные числа?
     
  12. попугай

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

    Joined:
    15 Jan 2008
    Messages:
    1,515
    Likes Received:
    400
    Reputations:
    196
    Это ты тестил с значением 248 ? С ним у меня тоже выдает такие резальты и опера и фаерфокс.. А с значением -248 все нормально.. - выдает ")"
     
  13. astrologer

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

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Разумеется, с отрицательным. Разве с положительными возникали какие-то проблемы?
     
  14. попугай

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

    Joined:
    15 Jan 2008
    Messages:
    1,515
    Likes Received:
    400
    Reputations:
    196
    да.. у меня с положительным показывает квадраты ...