Author Topic: Как узнать код символа  (Read 2226 times)

0 Members and 1 Guest are viewing this topic.

Oblie1968

  • Освоившийся
  • **
  • Posts: 29
    • View Profile
Как узнать код символа
« on: February 21, 2022, 04:23:34 PM »
Подскажите, как можно узнать код символа, ну, например, первого символа строки?
Функция CHAR (code) есть, а вот обратной функции я не нашёл.

Сама CHAR тоже работает странно с кодами 3, 34, 35, 39 (это ETX и символы восклицательный знак, кавычки, апостроф).
Попробуйте выполнить простой код:
Code: (clickermann) [Select]
$kod=34
$str=char($kod)
if ($str==char($kod))
  print("Ok")
else
  print("Ups") 
end_if
У вас ничего не получится, в 3 строке будет ошибка и скрипт остановится.
При этом если поставить любой другой код, то всё работает без проблем.

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Как узнать код символа
« Reply #1 on: February 21, 2022, 04:49:23 PM »
Подскажите, как можно узнать код символа, ну, например, первого символа строки?
Функция CHAR (code) есть, а вот обратной функции я не нашёл.

Она есть, но в бета версии вот тут http://crapware.aidf.org/forum/index.php?topic=356.msg33512#msg33512 , CODE (char)

А ошибка в сравнении строк это было и ранее, строки это оно такое... По  ошибкам в работе пиши в той же теме по ошибкам и тестированию.

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Как узнать код символа
« Reply #2 on: February 21, 2022, 05:55:49 PM »
Ах, да, вот как это выглядит.
Code: (clickermann) [Select]
$kod=34
$str=char($kod)
print($str)

if (code($str)==$kod)
  print("Ok")
else
  print("Ups") 
end_if
halt

Oblie1968

  • Освоившийся
  • **
  • Posts: 29
    • View Profile
Re: Как узнать код символа
« Reply #3 on: February 22, 2022, 12:28:00 AM »
Она есть, но в бета версии вот тут http://crapware.aidf.org/forum/index.php?topic=356.msg33512#msg33512 , CODE (char)
А ошибка в сравнении строк это было и ранее, строки это оно такое... По  ошибкам в работе пиши в той же теме по ошибкам и тестированию.
Если в стабильной такие косяки, я даже представить не могу, что там в бетте.  :D
А что ещё там добавлено, кроме CODE, есть смысл эту бетту запускать?

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Как узнать код символа
« Reply #4 on: February 22, 2022, 09:20:58 AM »
Попробуйте выполнить простой код:
...
У вас ничего не получится, в 3 строке будет ошибка и скрипт остановится.

В 32 битной версии всё нормально, это только в 64-битной ошибка. Поэтому не использую x64 версию, там и других странностей хватает, которые давно пофиксили в x32.


Oblie1968

  • Освоившийся
  • **
  • Posts: 29
    • View Profile
Re: Как узнать код символа
« Reply #5 on: March 14, 2023, 06:34:37 PM »
char() ругается на коды 3,34,35,36,39. На другие не ругается. Но то, что не ругается, не значит, что символы со всеми другими кодами читаются. Например, char(63), это знак рубля, вообще для char() - пустое место.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Как узнать код символа
« Reply #6 on: March 15, 2023, 10:12:32 AM »
char() ругается на коды 3,34,35,36,39. На другие не ругается. Но то, что не ругается, не значит, что символы со всеми другими кодами читаются. Например, char(63), это знак рубля, вообще для char() - пустое место.

Версия 4.13.14 ни на что не ругается. Вот пруф



У кода "3" нет отображаемого символа. От 0 до 31 управляющие коды.
И с каких это пор 63 это символ рубля? В ASCII вообще нет символа рубля, а значит он не может быть из 1 байта. В юникоде его код 0x20BD
Code: (clickermann) [Select]
print(char(0x20BD))
Лог:
Quote
10:31:07 ₽
« Last Edit: March 15, 2023, 10:34:25 AM by Vint »