Микровступление

Привет всем. Последнее время я писал код полей ввода input для номеров телефона и др. И мне пришлось углубиться в эту тему и разобраться как устроены мобильные номера телефонов. И в этой статье я хочу с вами поделиться своим опытом. Я постараюсь очень кратко, так что присоединяйтесь, потратьте 15 минут, если вы этого не знаете и вам любопытно.

Если вы занимаетесь программированием на vue.js, то вот вам ссылка на компонент, который включает различные input поля в том числе для номеров телефонов. Мне кажется данный компонент может сильно облегчить вам жизнь, ниже ссылка на github и гифка как работает одно из полей. На этом по вступлению все, дальше только по теме.

https://github.com/fakt309/inputv

Немного истории

Начинается же все конечно с создание первого телефона. Самые первые телефоны были предназначены только для конкретных домов и соединялись непосредственно напрямую. Так как прокладывать связь дорого, их использовали либо правительственные органы либо богатые люди. Так как телефония начинает активно развиваться почти сразу же приходит мысль, что соединять телефоны напрямую не разумно, гораздо лучше иметь центр, к которому подключены множество телефонов и данный центр может переключать вас с телефоном, по его номеру. Ниже показана телефонистка, которая вручную переключает вас по номеру телефона.

Так собственно и появляется самая первая нумерация в англии, сша и т.д. Но в самом начальном этапе нумерация была децентрализована, не существовало никого стандарта номеров телефонов, как правило это были трехзначные номера, например 867, так как телефонов было довольно мало. И совсем немного времени проходит как уже телефонные линии покрываются почти повсеместно, но так как каждая страна ведет собственную нумерацию, нету возможности позвонить за рубеж, тогда то и возникает идея создание единого стандарта, которому подчинялись бы все люди мира, чтобы у каждого человека был свой уникальный номер, по которому можно дозвониться. Переходим к следующей главе.

E.123 E.164

E.123 и E.164 именно под такими номерами Международный Консультационный Комитет по Телефонии и Телеграфии разработал рекомендации согласно которым мы устанавливаем номера и по сей день.

Знак +

Первое правило, все номера в международном формате, без исключения начинаются со знака +.

Код страны

После знака + идут следующие цифры, которые указывают страну, что и называется кодом страны. Длина может доходить до 6 цифр, но как правило это занимает одну две или три цифры. Основная идея заключается в том, чтобы каждой стране раздать свой номер, внутри которого также есть множество номеров. Как распределить эти номера должно решать правительство данной страны. Как вы видите на карте выше, было принято решения поделить весь мир на 9 частей в соответствии с географической принадлежностью страны, код страны будет начинаться на эту цифру. Например все страны Африки начинаются с 2. Все страны Северной Америки с 1 и т.д. На момент создания этой системы еще существовал СССР и было принято решение выделить отдельный код +7 для всего СССР, после распада, данный номер сохранился только в России и Казахстане.

Почему у нас работает 8 и +7 одинаково

Как вы можете видеть выше если вы наберете в телефоне +8, то вы позвоните в Китай, либо Японию. Но если вы наберете 8 без плюса, то вы также попадаете в Россию. Это было сделано еще в СССР для удобства, чтобы не искать в телефоне знак плюс, для внутренних звонков, если оператор получает от вас телефон без знака плюс с 8, то просто меняет его на +7, но это работает только в России и по сей день. Если вы попробуете набрать такой номер телефона в другой стране, оператор просто скажет что номер некорректный, либо обработает не так как вы ожидаете. Почему именно цифра 8, точно не известно, в некоторых источниках говорят, что все служебные номера были заняты и единственное свободное было 8 поэтому его использовали, но это не так. Потому что служебные номера в СССР начинались с 0, например 01, 02, 03 .. И Номер 08 был служебным номером для ремонта телефона. А цифры 8 без нуля именно означала замену +7, но почему 8, не известно лично мне.

Номер телефона

После кода страны идет номер телефона. Таким образом, что для каждой страны мы имеем столько номеров, что хватает на каждого человека проживающего в этой стране, что хватает даже Китаю и Индии с 1.5 миллиардов населения и даже на все номера различных ведомств.

Номер региона

У каждой страны есть примерно по 10 миллиардов номеров. Формально правительство страны само решает как распоряжаться этими номерами и кому их выдавать, но тем не менее также в выше сказанных рекомендациях E.123 E.164 было рекомендовано использовать всем странам первые 3 цифры из 10 для обозначения региона. Так как каждая страна делится на части, например Россия на субъекты, США на штаты, Италия на провинции и т.д. Количество деления в каждой стране не превышает 1000, Например в России около 80, в США 50 т.д. Следовательно 3 цифры, в которой можно пронумеровать 1000 номеров, хватает с головой. И данной рекомендации прислушались и выполнили почти все государства, правда в некоторых местах используются первые 4 цифры для обозначения региона. Так как субъектов во многих странах намного меньше чем 1000, то и выдавать можно не по одному номеру, а по несколько. Например, в России выдают номер по региону и также еще по оператору, например у МТС по Ленинградской области один номер, у Мегафона по Ленинградской области уже другой номер и такой же принцип соблюдается во многих странах. Правда с внедрением услуги сохранения номера телефона, когда ты можешь менять симку сохраняя номер телефона, смысл кодов регионов стал теряться, так как человек может приобрести в одном регионе, затем переехать купить новую симку и сохранить старый номер от другого региона.

Последние семь цифр

Последние семь цифр указывают уникальный номер каждого абонента. Если кто-то помнит или знает, раньше были домашние телефоны и как правило там номера были из семи, шести или пяти цифр. На самом деле при наборе такого номера оператор автоматически дописывал вначале двойки или шестёрки, чтобы цифр стало семь, затем приписывает номер региона в котором ты находишься затем приписывает код страны в которой ты находишься и по итогу ты просто звонишь в собственный город абоненту номер которого ты указал. Кстати, это работает и сейчас, вы можете написать в мобильном телефоне номер из семи цифры и вы просто позвоните по номеру.

+7 (код города, где вы находитесь) семь цифр которые вы указали

Всем спасибо за внимание. Если вы узнали что-то новое для себя, то это очень отлично вы расширили кругозор своих знаний.

https://github.com/fakt309/inputv

Комментарии (150)


  1. k12th
    08.11.2021 16:53
    +12

    Текст очень познавательный, спасибо.

    Что же касается инпутов с маской для телефона, люто возненавидел их на российских сайтах после переезда за границу. Ни одного не встречал чтоб не мешал вводить.


  1. Aspos
    08.11.2021 17:02
    +9

    Уточнение: Географический DEF регион +7, к сожалению, остаётся под контролем России которая недавно выжала Казахстан и теперь в семёрке останется только Россия. Казахстан уйдёт на +99X


    1. Daimos
      08.11.2021 19:52
      +11

      Выжала или Казахстан сам ушел?


      1. Aspos
        08.11.2021 23:56
        +3

        Скажем так: стороны не приложили достаточно усилий чтобы разгрести пустячные по сути сложности и Казахстан был вынужден уйти.


        1. DikSoft
          09.11.2021 11:36
          +6

          Абсолютно идиотское решение.

          Почему было не закрепить сложившееся по факту разделение, оставив за Казахстаном +77 - я совершенно не понимаю. США и Канада как-то ведь не парятся по поводу общей первой цифры?
          Думаю, что тут больше политики и популизма, причем с обоих сторон, чем мозгов и рационального поведения.


          1. quwy
            09.11.2021 15:04
            +4

            Почему было не закрепить сложившееся по факту разделение, оставив за Казахстаном +77

            Может еще и автомобильные коды регионов 77 и 777 отдать каким-нибудь Мухосранскам? Вы там думайте, что предлагаете!


            1. tvr
              09.11.2021 16:39

              Номера с кодом региона 777 одно время выдавались в Крыму. :))


    1. Ds02006
      09.11.2021 08:45
      +1

      Уточню - уйдёт на +997. В "зоне семёрки" останутся Россия и мало кем признанные Абхазия и Южная Осетия.


      1. tyomitch
        09.11.2021 12:27
        +1

        Есличо, на казахстанских симках уже давным-давно выбивается код страны 997 (с третьей по пятую цифры ICCID):

        Фотки из гугла
        MNC=01
        MNC=01
        MNC=02
        MNC=02
        MNC=07
        MNC=07


  1. Neusser
    08.11.2021 17:05
    +23

    Длина строго фиксирована 10 цифрами.

    Нет. У меня сейчас домашний 11-значный. До переезда был 9-значный. В телефоне полно 11-значных номеров. И есть даже 8-значный - датский мобильный.


  1. kahi4
    08.11.2021 17:29
    +16

    Был и остаюсь уверенным, что стандартный и единственно верный способ разбирать номер телефона - https://github.com/google/libphonenumber

    Все остальное очень быстро перестаёт работать, как только появляются новые регионы, потому что правила формирования региональных (коротких) номеров мягко говоря случайно и не предсказуемо, но часто люди привыкают к ним достаточно сильно


    1. aborouhin
      08.11.2021 17:44
      +15

      В репозитории этой библиотеки обнаружил просто очень полезный текст. Там и про количество знаков в номере, про что тут в соседних комментах пишут (п. 16) и много всякого другого на тему "не всё так просто".


  1. AndreyMyagkov
    08.11.2021 17:41
    +1

    В некоторых странах есть и 12 значные номера. У мобильных операторов есть локальные и международные номера и они не подходят под формулу международный = локальный + регион + страна


    1. j_wayne
      09.11.2021 12:25

      Как пример - Финляндия с 12-значным номером +358... Для локального вместо +358 используется 0, ровно так же как с восьмеркой в России


  1. screwer
    08.11.2021 17:50
    +1

    Звонили по межгороду "через восьмёрку". Возможно поэтому 8 ?


    1. Neusser
      08.11.2021 17:52
      +3

      Как раз наоборот. Не 8, потому что звонили "через восьмерку", а звонили "через восьмерку", потому что 9.


      1. mapron
        08.11.2021 23:33
        +5

        А почему 9 тогда? понятнее не стало.


        1. Neusser
          09.11.2021 16:02
          +3

          Потому что опечатка.


          1. mapron
            09.11.2021 16:03
            +2

            Ой. Не догадался.


      1. Laimerus0073
        09.11.2021 01:23
        +7

        Цифра "8" это выход на муждугороднюю АТС. Поэтому в городе нет АТС где номера начинаются на "8" и на "0", так как "0" это выход на специальные службы города.

        звонили "через восьмерку", потому что 9

        Извините, ход Ваших мыслей туманен.


        1. Neusser
          09.11.2021 16:02

          И вы извините, но очень ясный ход мыслей, как и то, что тут опечатка. Не 9, а 8, очевидно.


    1. Laimerus0073
      09.11.2021 01:20
      +2

      Цифра "8" это выход на междугороднюю АТС с городской АТС. Иногда в крупных офисах стоят собственные мини-АТС. Выход в "город" можно настроить на любую цифру, без набора цифры мини-АТС просто датс отказ, так как внутри нее используются 4х значные номера, а Вы набрали 6-ти значный.


      1. netch80
        09.11.2021 01:59
        +2

        > Выход в «город» можно настроить на любую цифру

        Тем не менее классика советских ведомственных АТС — выход в город через 9, и это повторялось в типовых сетапах и постсоветского периода, когда массово ставили всякие панасоники в офисах.
        У меня дома до 1985 был телефон подключен к такой ведомственной станции (видимо, проще варианта не нашли), в город надо было всё набирать через 9 :)

        > без набора цифры мини-АТС просто датс отказ

        На одной из работ по желанию начальства устроили разделение по префиксам (там стояли Nortel Meridian), внутренние телефоны начинались с 1, 3, 6, 9, а в городе были 2, 4, 5 (и 8 на межгород). Но через несколько лет стали выдавать номера на 3… и оказалось, что для них нужно вводить какой-то более длинный префикс…


        1. IronHead
          09.11.2021 11:15
          +1

          Раньше 9 это был коммутатор
          Набираешь 9 и ждешь ответ, потом говоришь: барышня, смольный мне
          она руками соединяет провод.
          в военных частях некоторых все еще так
          а в офисах женщину вынули — автомат поставили


          1. netch80
            09.11.2021 11:45

            > Раньше 9 это был коммутатор
            > Набираешь 9 и ждешь ответ, потом говоришь: барышня, смольный мне

            Там был вообще не 9, а произвольный сигнал на линии — цепочка разрывов любой длины.

            > в военных частях некоторых все еще так

            У нас даже лежала пара военных телефонов. Но к ним не нашли рабочие батареи, поэтому толком не применили :)
            На одной стороне крутилась ручка — другая сторона тренькала.


      1. SinnerLike
        10.11.2021 09:07
        +4

        АТС отказ даст только IP телефонам, потому что те, передают номер целым пакетом.

        Если телефон аналоговый или цифровой, АТС примет первые набранные цифры и по ним попытается позвонить. Если такой не найдётся - тогда даст отказ.

        А может и совпасть. Например у вас выход в горд на 9, а человек наберёт 123456; если у вас на АТС 4 или 5 цифр, АТС вызовет абонента 1234 или 12345 соответственно.

        А ещё может быть вариант без отдельной цифры выхода в город. Например городская АТС продаёт вам тысячу номеров 43ххх. Тогда все набранные номер 43ххх будут ходить внутри АТС. А все остальные уходить на город.


  1. nerudo
    08.11.2021 17:53
    +1

    «8» была изначально зарезервированным кодом выхода на межгород по всему Союзу. Собственно в том же контексте она и продолжает использоваться 8-код_города-локальный номер. Сейчас, как я понимаю, есть желание с 8 мигрировать на 0, в соответствии с какими-т международными правилами.


    1. K0styan
      08.11.2021 18:14
      +15

      Правила действительно есть и очень простые: один 0 - выход на межгород, двойной 00 - выход на международную линию. Знак "+" взаимозаменяем с 00 - более того, именно поэтому на большинстве цифровых клавиатур он набирается либо долгим, либо двойным нажатием на кнопку с нулём.

      Когда в СССР проектировали телефонные сети, правила придумали свои (с 8 для межгорода и 810 для международных звонков), поэтому в 90-х было куча костылей нагорожено, которые постепенно рассасывались.


      1. tyomitch
        08.11.2021 19:35
        +1

        Кроме России, есть и другие страны, где для выхода на межгород свой уникальный префикс: например, на Кубе 119

        https://en.wikipedia.org/wiki/List_of_international_call_prefixes#Countries_by_international_prefix


        1. Yoel
          08.11.2021 22:26
          +1

          В США 011. Но это именно межгород внутри страны и ряд стран, входящих в North American Numbering Plan. А на домашнем телефоне единица, потом код города и телефон. Причем часто не срабатывает (по крайней мере, лет 10-15 назад так было), если абонент решил сэкономить и не платит за межгород. И это именно для межгорода. Для международных звонков с домашнего телефона тоже 011.


        1. Yoel
          08.11.2021 22:32

          На практике может быть и на мобильном телефоне межгород вырублен, а заодно и междугородные звонки. Я так однажды залетел в счет около $500 за приходящие звонки из России в Нью-Йорк (не только, отвечал тоже) и вырубил их вообще! Фирма была Verizon, которая много чем неприятна, но речь в этой дискуссии не о ней.


  1. AndrewN
    08.11.2021 17:56

    так как человек может приобрести в одном регионе, затем переехать купить новую симку и сохранить старый номер от другого региона

    А это точно работает? Вроде можно было менять только оператора внутри одного региона. Или уже можно и регион поменять?


    1. aMster1
      08.11.2021 18:11
      +7

      Это точно не работает.

      Нельзя сменить регион. Оператора можно, а регион нет.


    1. izoker8
      08.11.2021 19:37
      -1

      На Йоте можно. На других не знаю.


      1. rekby
        08.11.2021 22:53
        +3

        На Йоте сменить регион тоже нельзя. Обслуживаться и ходить в офис другого региона, получать там симки и т.п. - можно, но номер останется в исходном регионе.

        И при звонках на этот номер звонок будет тарифицироваться как звонок в тот регион, где номер изначально был зарегистрирован.


  1. Source
    08.11.2021 18:39
    +20

    +7 - это как-бы инкремент (++7) и в итоге получается 8 xD


  1. pmcode
    08.11.2021 19:01
    +58

    Это было сделано еще в СССР для удобства, чтобы не искать в телефоне знак плюс

    Действительно, найти знак плюс на телефоне с дисковым номеронабирателем довольно затруднительно.

    Как вы можете видеть выше если вы наберете в телефоне +8, то вы позвоните в Китай, либо Японию. Но если вы наберете 8 без плюса, то вы также попадаете в Россию.

    Это называется национальный план нумерации. И там не только восьмерка, но и еще вагон префиксов.

    Правда с внедрением услуги сохранения номера телефона, когда ты можешь менять симку сохраняя номер телефона, смысл кодов регионов стал теряться

    Ну вы бы хоть википедию бы почитали что ли. DEF не выделяются по географическому признаку по определению. Один и тот же DEF может быть попилен на несколько регионов.

    На самом деле при наборе такого номера оператор автоматически дописывал вначале двойки или шестёрки, чтобы цифр стало семь.

    Вы описываете какой-то отдельный частный случай нормализации номера. Ни 2, ни 6, ни длина 7 знаков не являются сакральными числами. На самом деле все описано в национальном плане нумерации и его редакциях за предыдущие годы.

    В общем я б побоялся использовать вашу либу для разбора номера :)


    1. iron-zorin
      08.11.2021 19:31
      +4

      Я совсем перестал маски использовать. Потому что один напишет номер через +7, другой через 8, третий - совсем без них


    1. Zalechi
      08.11.2021 19:36
      +3

      Я еще не понял в какой момент, (код) страны образует с (кодом) региона почему-то префикс из первых трех цифр, так что последние 7 цифр из 10 достаются абоненту. Ведь код страны может быть из трехзначного числа? Да, и от куда лимит 10 в цифр взялся? Мой полный номер мобилы в италии без полюса(+) содержит 13 цифр.


      1. pmcode
        08.11.2021 19:51
        +7

        6.1 Длина международного номера E.164 МСЭ-Т рекомендует, чтобы максимальная длина международных номеров для географических зон, глобальных служб, cетей и групп стран не превышала 15 цифр (не включая международный префикс).

        Т.е. номер в м/н формате (код страны + национальный номер) не рекомендуется делать длиннее 15 знаков. Автор просто ошибочно экстаполировал российский стандарт (10 знаков) на весь мир.


        1. Vedga
          08.11.2021 23:09
          +1

          Чисто теоретически, "Address Signals� The actual digits that comprise the called number. This includes digits 0�9 and the overdecadic digits (A�F), however, the overdecadic digits are not supported in all networks. Each digit is coded as a four-bit field." (из описания состава IAM в SS-7). Т.е. теоретически в конце номеров могут встречаться и буквы от A до F. Во всяком случае транзитное оборудование такой вызов, скорее всего, пропустит. Ну и кто-то где-то в буржуинии (у нас - нет, закон явно запрещает) может использовать такие номера. Впрочем лично я такое ни разу не встречал.


          1. vikarti
            09.11.2021 06:56
            +1

            Для MNP Судя по https://habr.com/ru/company/beeline/blog/244595/ (первые строки) и https://habr.com/ru/post/216537/ есть такая штука как Routing Number и вот он — начинается с D именно чтобы нельзя было руками набрать.
            Судя по https://cyberleninka.ru/article/n/dva-voprosa-uspeshnoy-realizatsii-mnp-v-rossii в мире — есть варианты где не только D в таких случаях используется


    1. Crazyvlad
      08.11.2021 20:41
      +21

      Ага. Часть разработчиков леняться читать стандарты, а ориентируются на свой (небольшой) опыт.

      А потом не возможно ввести номер , формат которого отличается от их мировозрения..


    1. rekby
      08.11.2021 23:00
      +2

      Здорово - для меня оказалось новостью, что после 8-ки вместо кода города можно выбрать оператора, а 810 - считал просто выходом на межнарод, а оказывается это выбор оператора и можно звонить через разных.


    1. Laimerus0073
      09.11.2021 01:15

      В сотовой сети номера для оператора выдаются блоками по 10 тысяч. Первые 6 цифр сотового номера позволяют определить регион подключения. После введения закона об отмене цифрового рабства можно перейти со своим номером к другом оператору, но нельзя поменять регион. То есть при переезде Питер -> Самара номер Вы никак не перенесете.


      1. pmcode
        09.11.2021 07:19

        В сотовой сети номера для оператора выдаются блоками по 10 тысяч. Первые 6 цифр сотового номера позволяют определить регион подключения.

        По моему с приходом MVNO такие ограничения убрали. Сейчас дают любое кол-во номеров, втч. не кратное 10.

        900;0062000;0062999;1000;ООО "Т2 Мобайл";Ростовская обл.
        900;0063000;0099999;37000;ООО "Т2 Мобайл";Краснодарский край
        ...
        958;4041920;4041989;70;ОАО "МТТ";Республика Татарстан
        958;4041990;4042049;60;ОАО "МТТ";г. Москва * Московская область


    1. Diamos
      09.11.2021 09:12
      +3

      Тот самый случай, когда комментарий ценнее статьи! Спасибо, pmcode.
      А автору статьи двойка за плохую подготовку.


  1. zhabr
    08.11.2021 19:25

    Интересно +8(800) у Китая купили/арендовали ?


    1. BjLomax
      08.11.2021 20:08

      +880 код Бангладеша


    1. ganzmavag
      08.11.2021 21:10

      А где такое используется? 8(800) только в голову приходит.


      1. JediPhilosopher
        08.11.2021 22:21
        +9

        Новая тема у телефонных мошенников, звонят с номера, похожего на номер какого-нибудь колл-центра банка, но не 8-800, а +8-800, что является обычным номером где-то там в другой стране. А обманываемый про это не в курсе, видит что вроде начинается на 8800 а что там плюс есть - не понимает что это означает, и доверяет звонящему.


        1. ganzmavag
          08.11.2021 22:31
          +1

          Ничего себе. Хитро придумано, думаю большинство действительно не в курсе таких нюансов про разницу между +8 и 8.


        1. perlestius
          09.11.2021 07:57

          Интересно, а если у человека настоящий номер банка сохранен в телефонной книге, телефон отобразит имя из книги или всё-таки номер? Например, сохранен как "Мой банк" с номером +7(123)456-78-90 или 8(123)456-78-90, что покажет телефон, если позвонят с +8(123)456-78-90: имя или номер?


          1. Harwest
            09.11.2021 08:06

            Зависит от логики приложения звонилки. На многих Xiaomi выборка из адресной книги идет по 10 цифрам начиная с конца.


        1. prs123
          09.11.2021 12:59

          А. Это видимо когда операторы наконец начали соблюдать требования и блокировать вызова с АОНом 8-800, они и решили пойти в контр-наступление.


  1. BjLomax
    08.11.2021 19:35
    +3

    Планы нумераций всех стан доступны тут:

    https://www.itu.int/oth/T0202.aspx?parent=T0202


  1. slik
    08.11.2021 19:39
    +8

    Первое правило, все номера в международном формате, без исключения начинаются со знака +.

    Знак "+" заменяет "00". Работают оба варианта.


  1. TachikomaGT
    08.11.2021 19:44
    +50

    Не столько к автору, сколько в общем к веб-разработчикам: пожалуйста хватит делать маскирование input'ов, 99.9% что чего-либо не учтёте и что-нибудь из привычного сломается. Вставка из буфера обмена, autocomplete из телефонной книги, переход по tab'у между элементами или ещё что нибудь. Оставьте type="tel" для того чтобы OS нужную клавиатуру подставила, при желании можно поиграться с autocomplete (в данном случае, то что начинается префикса tel) и удалите лишние пробельные и пробелы-тире-скобочки перед передачей на валидацию. А то нарисуют красивостей в формах, а потом, даже в банках, то номер телефона автоматом не подставить, то данные карты.


    1. Wesha
      08.11.2021 22:09
      +6

      А то нарисуют красивостей в формах, а потом, даже в банках, то номер телефона автоматом не подставить, то данные карты.

      У них синдром вахтёра, сэр.

      Про емейлы я даже статью перевёл, которая приходит к такому же выводу.


      1. TachikomaGT
        09.11.2021 02:03
        +4

        Не думаю что это как-то связано с вахтёрством. Скорее, тот кто будет рисовать дизайн формы, может не знать о том, как будет автокомплитить поля мобильный браузер или будет во главу ставить вау-эффект, а не уменьшение количества действий при вводе данных, кроме того, подойдёт к вопросу исходя из своих культурных представлений. Плюс, отсутствие условного юзабилити-тестирования в реальном окружении.

        Возвращаясь к статье, на скриншоте после поиска префикса кода Франции по названию страны (уже, имхо, вещь в себе), подставляется префикс +33, а далее идёт привычный русскому человеку (___) ___ __-__. Итого 12 цифр с country code. При этом в статье «Telephone numbers in France» говорится:

        When calling France from abroad, the leading zero should be omitted: for example, to call a number in Southwest France, one would dial +33 5 xx xx xx xx.

        т.е. 11 цифр и с другой группировкой. При том что в стандарте на MSISDN (то что привычно называется номером телефона), в принципе, может быть до 15 цифр (регулируются международным и локальным законодательствами, попробуй их все найди, да ещё в актуальном состоянии поддерживай).

        Статья по email отличная, спасибо за перевод. Я бы, кстати, навскидку, вспомнил ещё эту статью про домашние адреса, чтобы люди не были излишне строгими при их валидации и повторю призыв, без необходимости, не усложнять формы ввода.


        1. XXXXPro
          09.11.2021 14:32

          Согласен с вами целиком и полностью! Типичная для нашего времени ситуация: в погоне за «красотой» и пользователю неудобства создаются, и лишние ресурсы тратятся на подключение этих самых скриптов форматирования (траффик, память, процессорное время)!

          На мой взгляд, с точки зрения юзабилити самое правильное решение такое: самый обычный input с type=tel и, возможно, уже прописанным значением +7. А под ним — вывод в виде обычного текста номера с разделителями и красивым форматированием (на полной версии сайта, на мобильной можно и без этого обойтись).


          1. megahertz
            09.11.2021 16:04
            +1

            Как вариант, форматированный номер показывать при потере фокуса


    1. Ritan
      08.11.2021 22:16
      +4

      Ещё половина не умеет удалять стандартное значение. И когда начинаешь вводить номер, то получаешь +7 905 +X XXX XXX XX XX.

      Встречал даже более изощрённое, когда дефолтное значение удалялось, но если набирать быстрее, чем 1 цифру в секунду, то не успевало и дефолтное значение перемешивается с вводом. Это на Ozon было, кажется


      1. vorphalack
        08.11.2021 23:50
        +4

        еще неоднократно встречал глюк, что эта дебильная стилизация форм ввода просто едет крышей, и фактически номер вводится в случайном порядке, то есть вместо +71234567890 получается +18237506479


        1. Ritan
          09.11.2021 10:16

          Да, такое тоже видел. Но я даже не могу предположить как можно так сломаться


          1. netch80
            09.11.2021 10:34
            +2

            > Но я даже не могу предположить как можно так сломаться

            Корректор значения в форме, работающий асинхронно по результатам выборки откуда-то с сервера и игнорирующий последующий ввод.
            Идеально работает в тестовых условиях (сервер в локалке или на той же машине, дизайнер спокойно вводит по одной цифре) и ломается в реальных (до сервера секунда RTT, он перегружен, клиент вводит 4-5 цифр в секунду привычным жестом).


      1. usrsse2
        09.11.2021 00:27
        +9

        Чаще не 905, а просто +7. +7 жёстко задано за пределами поля ввода, а автоподстановка своего номера телефона подставляет с +7, и вместо +7 (999) 111-22-33 получается +7 (799) 911-12-23, а последняя цифра просто исчезает


        1. Tarakanator
          09.11.2021 12:05

          Особенно бесит когда просят ввести в формате +7... но при этом само подставляет +7 после ввода первой цифры.
          Ещё натыкался просят ввести ФИО, тыкаешь в поле, а там уже надо ввести не ФИО, а только фамилию, для ИО другие поля. Я сутки не мог понять почему перевод не проходит (на смартфоне за клавиатурой не видно было полей ИО)


    1. kahi4
      09.11.2021 14:51
      -1

      Мы не требуем формата и вводить можно со скобками, пробелами и тире (буквы нельзя, но это было бы уже слишком). Но мы вынуждены валидировать что он верный, иначе мы не сможем отправлять смс автоматически, а для нас это критично.

      Но валидация внутри вычищает мусор, и используем библиотеку гугла, которая ест все номера, включая разрешённые региональные (и правильно восстанавливает страну по ним). Пока не нашли лучшего способа.


      1. TheNavi
        09.11.2021 16:44
        +1

        Вспоминая как устроен кейпад телефонов вы говорите - буквы нельзя ? Ой - вы кажется отрезали номера которые можно указывать в формате

        букв - например +1-800-GOT-JUNK он же  +1-800-468-5865. В тех же штатах видимо весьма прижившаяся тема.


        1. tyomitch
          09.11.2021 16:57
          +1

          Ководство § 91. Краткая история телефонных номеров






        1. kahi4
          09.11.2021 19:35
          +1

          Да я знаю. Но мы не работаем на американский регион, а если это американский экспат в Европе - мы далеко не первые кто ему не даст вводить буквами. Но, может, и расширим в будущем.


    1. megahertz
      09.11.2021 16:10
      +1

      Самый лютый вариант - это когда используют 2 или более отдельных инпута.

      Забавный случай произошел, когда на форме заказа из-за автоматически подставляемой семерки пропала последняя цифра номера. Но оператор был упорный и стал обзванивать все возможные 10 номеров по порядку :)


    1. Blumfontein
      10.11.2021 06:58
      +1

      Так это вы дизанерам говорите и манагерам, которые хотят "кравсимый димзайн". Разработчки просто с фигмы верстает.


      1. TachikomaGT
        10.11.2021 18:07

        Плох тот разработчик, который не может дать комментарий своему менеджеру или дизайнеру, а просто с фигмы верстает. Особенно, если это внутренний продукт.


  1. dmitry_dvm
    08.11.2021 21:00

    А зачем телефоны показывают клавиатуры с всякими точками и прочими непонятными знаками в инпутах, помеченных tel?


    1. vanxant
      08.11.2021 21:06
      +2

      Точками иногда отделяют группы цифр (как мы минусами)


    1. enamchuk
      08.11.2021 22:23
      +2

      Запятая, точка с запятой - установка задержки после набора номера для передачи DTMF последовательности (например, добавочный номер в офисе, ПИН карты оплаты междугородних переговоров и т.д.)


      1. drWhy
        10.11.2021 12:34

        Кстати, про добавочный — пользовался когда-то сервисом приёмки факса, его шлюзовали на электронную почту. ЕМНИП в качестве добавочного там был довольно длинный внутренний идентификатор клиента.


  1. Vedga
    08.11.2021 22:55
    +1

    Для РФ формат 7(ABC|DEF|ИИС)XXXXXXX.

    DEF (на данный момент 9XX) - мобильные

    ИИС (на данный момент 8XX) - "бесплатные", "premium rate" и прочие сервисные

    ABC - все остальное, земля (стационарные номера)

    Оперативные изменения см. в документах Россвязь.

    Лично я (при необходимости действительно серьезной обработки номеров) первые символы анализирую по таблице префиксов стран, дальше для РФ - см. выше, международку не трогаю, просто общий лимит в 15 символов (SS7 больше не пропустит, насколько я помню формат заголовка IAM).


    1. Laimerus0073
      09.11.2021 01:11

      В одной из книг нашел упоминание что изначально в плану нумерации для сотовой сети был выделен номер DEF 900.


  1. QtRoS
    08.11.2021 22:56
    +1

    Спасибо, статья небольшая, но познавательная. Вот бы дать её почитать тем, кто упорно использует 8 в начале номера, вместо +7. Это чревато! Из необычных багов - на браслете у родственника при входящем звонке не отображалось имя контакта. Оказалось, что все номера в книге записаны через 8-ку, и браслет, видимо, не мог сопоставить входящий с адресной книгой.


    1. Laimerus0073
      09.11.2021 01:04

      В старых моделях телефонов была такая проблема. Телефон не определял контакт, приходилось ручками менять номер с "8" на "+7".


      1. Kazehay
        11.11.2021 09:11

        Угу, а я просто привык набирать сразу +7 если записываю номер вручную.


      1. Izhevsk
        15.11.2021 11:40

        Mi band 4 не умеет показывать имя контакта с 8, приходится записывать +7 в телефоне.


  1. artemisia_borealis
    09.11.2021 00:12
    +6

    Например все страны Африки начинаются с 2. Все страны Северной Америки с 1 и т.д.
    но что-то, как обычно, пошло не так, и Гренландия имеет код 299.

    Физически это — Америка, политически — Европа, а «телефонно» — Африка.


    1. Ds02006
      09.11.2021 08:55
      +3

      Фарерские острова (автономный регион в составе Королевства Дании) тоже имеют "африканский" код, +298


    1. FSA
      09.11.2021 19:44
      +1

      Коды раздавали в лохматых годах. Политически могло бы быть иначе, но чисто экономически было просто выгоднее дать код, который проще маршрутизировать. Это сейчас, в эпоху интернета, с номерами делать можно что угодно. А тогда это были механические устройства и чтобы загнать какой-то код в определённую точку земли нужно было нехило так железок поставить по пути.


  1. DaneSoul
    09.11.2021 00:16
    +2

    Не нашел в статье ответа на самый интересный вопрос: как именно определяется где закончился код страны и начался номер абонента в стране, если длина кода и длина номера не фиксированы (между разными странами есть отличия) и набираются без разделителей?


    1. Vedga
      09.11.2021 02:53
      +1

      Никак. Вернее по таблице кодов стран ITU.


    1. pmcode
      09.11.2021 08:20

      Загоняете таблицу всех международных кодов в prefix trie и ищете максимальное совпадение.


  1. Laimerus0073
    09.11.2021 01:02

    Прошло почти 10 лет с завершения обучения по связной специальности ( Сети связи и системы коммутации ). Добавлю некоторые моменты в текст статьи.

    На обычном дисковом телефоне нет знака "+" , чтобы позвонить зарубеж надо набрать "8" - ( выход на междугороднюю АТС ), затем "10" ( выход на международную АТС ), потом набрать номер абонента. Не думаю что сейчас найдутся люди, которые знают почему именно такие цифры и такой порядок был придуман в СССР.

    По сотовым номерам. Номер сотового телефона выглядит следующим образом (912-345)-ХХХХ, где последние четыре цифры и определяют номер абонента. Первые шесть цифр определяют оператора сотовой связи и регион. Проверить принадлежность номера к региону можно через различные бесплатные сайты. Операторы арендуют номера у государства блоками по 10 тысяч штук ( от 0000 до 9999 ). Обычно арендуют несколько блоков по 10 тысяч номер в каждом.

    Изначально для сотовой связи планировалось выделить номерную емкость 900-ХХХ-ХХХХ.

    Вступил закон об отмене "цифрового рабства", по которому можно поменять оператора сотовой связи, но нельзя поменять регион. Переезжая из одного региона РФ в другой ( Воронеж -> Омск ) нельзя забрать с собой сотовый номер.

    В некоторых телефонах была недоработка распознавания номеров при звонках. Если абонент записан 8-9хх.., при звонке высвечивается как +7-9хх, то телефон считает эти два номера различными.

    Некоторые люди не знают что в России номера должны начинаться либо "+7", либо "8", поэтому может произойти недопонимание, если Ваш номер запишут как "9хх.." в телефонную книжку, а затем не смогут до Вас дозвониться.


  1. 0x656b694d
    09.11.2021 01:02
    +3

    На гифке в начале статьи баг (лишняя цифра): французский номер мог бы писаться так: +33 (123) 456-78-9, но никто никогда так не пишет. Пишут либо +33 123 456 789, либо +33 1 23 45 67 89. Местный номер пишут с нулём вместо +33 группами по две цифры.


    1. singeorange
      09.11.2021 11:16

      Я для французов свой номер всегда переформатирую +7 903 123 45 67 -> +7 90 31 23 45 67.


      1. 0x656b694d
        09.11.2021 11:21

        Merci!


  1. tommyangelo27
    09.11.2021 01:33
    +2

    первые 3 цифры из 10

    Например, в Польше номера состоят из 9 цифр, и первые две либо отвечают за регион (в случае домашних сетей) либо указывают на мобильную сеть. Конкретного мобильного оператора определить с 2004 года нельзя, так как номер можно переносить между операторами.


  1. netch80
    09.11.2021 02:10
    +1

    С самой дикой записью столкнулся в Словении: телефон записывается в справочниках/рекламе в виде +386(0)xx xxx xxx. И пока я не понял, что это _или_ +386 _или_ 0 префикса выхода на нумерацию страны — не мог дозвониться :((
    Сейчас вроде это уже не в традиции, но несколько лет назад было типовым…


    1. zv347
      09.11.2021 06:51
      +1

      С точки зрения синтаксиса языка как раз очень логично.
      Меня, наоборот, всегда раздражала наша традиция писать код города в скобках.
      8 (495) 123 45 67
      Почему, почему «495» в скобках?! Это такая же обязательная часть номера, как и остальные. Кроме звонков с местных городских телефонов, но тогда и «8» надо убрать в скобки.


      1. netch80
        09.11.2021 09:45
        +3

        > Почему, почему «495» в скобках?!

        Потому что наглядный стиль выделить эту часть номера — чтобы было очень заметно при парсинге глазами.
        Когда в номере много цифр (помните правило «7±2»?) — становится неудобно читать, особенно в варианте, как вы написали — с пробелами.
        «8 495 123 45 67» — даже я, привыкший работать с числами, на таком может запнуться. Хотя бы дефисы сделали: «8-495-123-45-67» — было бы лучше.
        А скобки помогают выделить этот код. К тому же на него в номере отдельное внимание (у нас, например, (50) — о, Vodafone, (98) — о, Киевстар, сразу понятно, сколько будет стоить звонок, (90) — особо платные, сюда не звонить).

        Тут скобки — это не скобки в смысле необязательности или чего-то такого, а средство выделения, и это, я считаю, очень правильно. Если вам не нравятся конкретные символы для этого — ну я сомневаюсь, что была адекватная альтернатива на момент введения…

        > Кроме звонков с местных городских телефонов, но тогда и «8» надо убрать в скобки.

        Что-то мне помнится, что в Москве в связи с тем, что у неё сейчас 3 префикса, любой набор надо делать в 11 цифр — 8(49z)xxx-xx-xx (z∈{5,8,9}). Так что пример чуть неудачный:)


        1. zv347
          09.11.2021 10:12
          +1

          Скобки для кода города использовались еще когда мобильных не было. Помню, конечно, смутно, но в 90-е могли писать вроде

          (095) 123-45-67

          Без восьмерки.

          При этом москвичи (логично) опускали скобки, а остальные понимали, что звонок будет междугородний. Заметим, что скобки там были вряд ли для зрительного выделения.

          Потом появились мобильники. Звонить с них нужно было всегда по полному номеру. Типа 8-916-123-45-67 или 8-095-123-45-67. В мобильных номерах скобки не писали, потому что там нет кода города. В полных городских номерах код города был, и его по привычке начали писать в скобках, теперь уже не несущих никакого смысла.

          Потом кто-то додумался так же поступать с кодами операторов.

          P.S. Ни с чем из написанного вами я не спорю.


          1. netch80
            09.11.2021 10:24

            > но в 90-е могли писать вроде
            > (095) 123-45-67
            > Без восьмерки.

            Это стандартная запись в Украине и во многих европейских странах. Например, мой мобильный телефон будет записан как (067)4xx-xx-xx.
            (Тут, однако, есть одна особенность Украины. Реально NDC код двузначный, и надо было бы писать (67)4xx-xx-xx, и так тоже пишут. Код страны +380, и писать +380(67)4xx-xx-xx правильно. Но некоторые не понимают и пишут +38(067)4xx-xx-xx, что уже некорректно.
            Набор с телефона у всех мобильщиков понимает и 9-значный без нуля, и 10-значный с нулём, и 12-значный с плюсом. А вот со стационарного (как минимум Укртелеком), если не тот же городской узел, надо набирать с 0 в 10 цифр или 00 плюс 12 цифр.)

            Если правда, что в России переведут набор на евростиль, то будет так же, с поправкой 380->7. Хотя с нынешней политикой я сомневаюсь, что это будет скоро.

            > Заметим, что скобки там были вряд ли для зрительного выделения.

            Я думаю, что как раз для этого, учитывая, что ой не все номера московские (киевские, и так далее).

            > P.S. Ни с чем из написанного вами я не спорю.

            Ну вот по факту возразили сразу по двум пунктам :)


            1. tyomitch
              09.11.2021 12:42

              Но некоторые не понимают и пишут +38(067)4xx-xx-xx, что уже некорректно.

              О, у меня из-за этой заморочки накрылось одно свидание в Киеве: в остальной Европе такая запись означает "либо +38 из-за рубежа, либо 0 внутри страны", и я вводил номер без нуля (11 цифр с плюсом) :-/


            1. eggstream
              09.11.2021 15:12

              Но некоторые не понимают и пишут +38(067)4xx-xx-xx, что уже некорректно.

              Некорректно, но очень удобно, потому как со стационарного телефона мобильные набираются именно начиная с 0.
              В вашем примере получится 067-4xx-xx-xx
              И когда диктуют свой номер телефона, обычно начинают именно с нуля, чтобы показать, что диктуют вместе с кодом оператора, а не местный наземный номер


              1. netch80
                09.11.2021 16:37
                +1

                > Некорректно, но очень удобно

                Ну вот представим себе, что Украине выдали бы не 380, а 386. Было бы точь-в-точь как я рассказывал пример про Словению — +386(0)67-4xx-xx-xx, и все должны были знать, что надо набирать или +386, или 0?


                1. tyomitch
                  09.11.2021 16:52

                  Но ведь в остальной Европе все это знают! (хотя скобки ставят всюду по-разному)
                  Например на www.uksmallbusinessdirectory.co.uk/listing-contact/94539 указан номер "+44 (020) 3287 6050", и это значит «020 3287 6050 изнутри Британии, +44 20 3287 6050 извне».


        1. singeorange
          09.11.2021 11:19

          Только вчера прятель не дозвонился по номеру из 10 цифр (Москва), который я ему написал, полагая, что +7 -то уж он сообразит добавить.

          "Неправильно набран номер"


      1. Vilgelm
        10.11.2021 12:05

        Не обязательная, хотя как в Москве не знаю. Но в других городах когда вы звоните из города (неважно с городского телефона или с мобильного) в этот же город 8 и код города можно отбросить, набрать номер просто как 123 45 67 и все сработает.


  1. corvair
    09.11.2021 03:01

    Однажды посреди ночи звонок с номера на +4 и на немецком начали что-то втирать со словами «банк», «карта» — по всей видимости, евромошенники ошиблись с кодом страны.


  1. CleverFoxforeve
    09.11.2021 07:58
    -3

    Хорошо написано, но я и так это знала????

    А вот тем, кто родился уже в отсутствие стационарных телефонов в квартирах, и никогда не ходил на телеграф позвонить в др город/страну весьма полезная информация ????


  1. 0xC0CAC01A
    09.11.2021 09:01
    +5

    Вопрос почти в тему. Огромное количество сервисов присылают SMS с кодом, используя SIM-карту в качестве модуля безопасности. Беда в том, что SIM-карты без использования (а точнее - оплаты, ведь всё в этом мире про деньги) в течение нескольких месяцев становятся неактивны. Есть ли страны, в которых законодательно запрещено отбирать у абонента телефонный номер и где можно получить вечную SIM-карту без абонентской платы?


    1. netch80
      09.11.2021 09:53
      +1

      > Есть ли страны, в которых законодательно запрещено отбирать у абонента телефонный номер

      Что-то я уверен, что таких нет и не будет, потому что номерной ресурс ограничен (местами — заметно ограничен) и даже нормативы ITU-T требуют от операторов мер по поддержанию актуальности этого ресурса. Оператор должен за него регулярно платить какие-то деньги регулятору, а дальше компенсирует это на своих абонентах.
      Хотите уникальный идентификатор — не вопрос, может, кто-то сделает, но это будет не телефонный номер.


      1. 0xC0CAC01A
        09.11.2021 12:17

        Насчёт ограниченности номерного ресурса, если посчитать для России, то при номерах вида +7 XXX YYY ZZZZ получается, что каждому из 146 миллионов можно выдать по 68 номеров и ещё останется.
        Ну и, если вдруг невиданный экономический скачок приведёт к увеличению популяции на два порядка, что помешает добавить ещё одну циферку, увеличив "ограниченный ресурс" ещё в 10 раз? Чай тут не четыре октета в так любимом всеми IPv4.

        И сколько опсосы платят регулятору за каждый номер?


        1. netch80
          09.11.2021 12:52
          +1

          > что каждому из 146 миллионов можно выдать по 68 номеров и ещё останется.

          1. Сократите это XXX раза в полтора: не может быть 0, 2, 80x, 90x…
          YYY аналогично (если не сотовые или иной вариант цифрового телефона с посылкой полного номера, а не по цифре за раз) пропускается ряд первых цифр.

          2. Вы не учитываете неравномерность распределения. Например, сколько людей в Москве и сколько в каком-нибудь Красноярском крае? А ведь каждый такой регион получает свой код. Да, есть многорегионные коды, это смягчает неравномерность, но она всё равно остаётся.

          3. Подсчитайте лучше количество кодов, доступных сотовым операторам. Возьмите какой-нибудь самый населённый регион (вроде центра), сколько кодов у него и сколько потенциальных желающих получить и сохранить номер. Сколько всяких 8-916 (или какой там код) надо выделить на Москву с окрестностями? Я думаю, вместо 68 у вас быстро получится что-то вроде 2-3.
          Я принципиально не хочу закапываться в российские реалии, а вот украинские для сравнения. Вроде бы тоже колоссальный запас (9 цифр, но 40 миллионов человек — 25-кратный запас, да?)
          Считаем теперь, 3 оператора по 20 миллионов клиентов (упрощение, но близко; многие имеют 2 номера от разных операторов). 60 миллионов — это полностью забитые 6 NDC кодов. Сотовикам сейчас выдано: 50, 63, 66, 67, 68, 70, 73, 91, 93, 95, 96, 97, 98, 99 — 14 кодов. Запас в 2 с хвостиком раза. Маловато, если будет вечное сохранение — выжрется максимум за 5 лет (а если учесть, что многие бросают старый номер и берут новый по акции, оповещая только ближайший круг — так вообще за год). Можно ещё чуть раздать, но половину пространства занимает стационарная связь (которой столько не нужно — местами можно 2-3 области посадить на один NDC код — но административно не хотят так делать).

          Для России, вы говорили про 68 раз… делим на 10 по результату украинского подсчёта, и ещё на 2 за счёт сильно большей неравномерности плотности населения. Остаётся около 3 раз. Этого явно недостаточно. Кстати, почему у вас «несколько месяцев»? Киевстар вроде держит год-полтора от последней оплаты, Водафон — 3 года. У вас уже давка, или народ сильно больше любит акции на новое подключение?

          Ну и на уровне интернациональной ITU-T это чисто наши заморочки — какая разница, что людей мало — всё равно принцип общий и надо платить, вон, Индия только плодится :)

          > Ну и, если вдруг невиданный экономический скачок приведёт к увеличению популяции на два порядка, что помешает добавить ещё одну циферку, увеличив «ограниченный ресурс» ещё в 10 раз? Чай тут не четыре октета в так любимом всеми IPv4.

          Ну да, а потом ещё добавить, ещё…
          С теми же IP адресами уже так просчитались дважды: что для IPv4, что для IPv6 не назначено политики «плати рыночную цену», есть разве что косвенное «тут бесхозный ресурс, можно продать». В результате куча монстров держит целые /8 не отдавая никому. Для IPv6 спасает, что адресов заведомо слишком много, и проблема не вспухнет, наверно, лет сто. Для IPv4 уже горит во весь рост.
          А для телефонных номеров откуда взять такой запас? Заставлять набирать по 20 цифр? Не надо. Думаю, текущая политика — хоть копейку, но выложи каждый год — вполне разумна.

          > И сколько опсосы платят регулятору за каждый номер?

          Сейчас — без малейшего понятия. Лет 10 назад интересовался, было что-то вроде 1$/год. Но это от страны зависит.


          1. tyomitch
            09.11.2021 12:58

            Заставлять набирать по 20 цифр? Не надо. 

            Теперь, когда номера не набирают пальцами по одной цифре, а вызывают из памяти телефона -- какая разница, какой они длины?


            1. netch80
              09.11.2021 13:03

              > Теперь, когда номера не набирают пальцами по одной цифре, а вызывают из памяти телефона

              Кто «вызывают»? Абстрактные некто?
              Много номеров таки набираются из рекламы, с веба и т.д., в среднем раз в неделю таки делается — и это я очень мало общаюсь за пределами привычного круга, а есть те, у которого таких десяток в день.


              1. tyomitch
                09.11.2021 13:25

                Возможно ли сосуществование дорогих коротких номеров для бизнеса и рекламы, и околобесплатных длинных номеров для простых людей? По аналогии с тем, как короткие домены на порядки дороже длинных.


                1. netch80
                  09.11.2021 13:58
                  +1

                  Мы говорим о внешней терминации номера (как на сотовом, пока не нажмёшь зелёную трубку — сколько угодно цифр) или самотерминации (как с проводного телефона, станция определяет)? Случаи совершенно разные.

                  Для самотерминации: технически — нет проблем, до тех пор пока выполняется условие Фано.
                  Собственно 01, 02 по-старому, 101, 102 по-новому это показывают.
                  Можно хоть так — если первая цифра 1, то после неё 1 цифра номера, 2 — две, и так далее :)
                  Был анекдот лет 15 назад. Один новый русский говорит другому:
                  — Запиши мой номер. 8-916…
                  — Какой-то не пацанский номер.
                  — 8-916. Это весь номер.
                  Насколько мне помнится, ещё недавно не то в Харькове, не то в Одессе соседствовали одновременно 6- и 7-значные номера внутригородского набора, отличались первой цифрой. (С межгорода перед 6-значными ставилось 2.)

                  В случае внешней терминации проблем меньше, но тут возникают свои заморочки. С сотового, например, 4 цифры — это местный короткий номер на 4 цифры или короткий номер под оператором? С плюсом проблем нет, но другого префикса не придумали (все эти короткие входят в «национальный план», вариантов только два — международный или национальный), поэтому надо их как-то разделять иначе.
                  Может, например, быть, что префикс NDC (область/регион/оператор) обязателен, но короткие спец. фирм не более 5 знаков, а региональные от 6 (а полный, самый дешёвый, 9 или 10). Технология такое позволяет, дело оператора, как их различать.


                1. Vilgelm
                  10.11.2021 12:16
                  +1

                  Такое возможно, например в Нидерландах есть «обычные» мобильные номера длиной в 9 цифр, а есть номера (типа ip телефонии), в которых может быть сколько угодно цифр (обычно 12). На такие номера можно звонить, отправлять смс и так далее, правда почему-то оно через раз работает и не любой сайт такой номер примет.

                  А есть еще короткие номера по 4 цифры для крупных компаний. Типа как у нас у условного Билайна 0611 номер справочной, только там это не привязано к оператору.


                  1. tyomitch
                    11.11.2021 11:56

                    А есть еще короткие номера по 4 цифры для крупных компаний. 

                    Извне страны они недостижимы; а речь шла о международных номерах.


    1. prs123
      09.11.2021 13:06

      Не получится. Номер принадлежит по прежнему оператору, а не абоненту.


  1. shifttstas
    09.11.2021 09:46

    так как человек может приобрести в одном регионе, затем переехать купить новую симку и сохранить старый номер от другого региона.

    Номера не переносяться между регионами, только внутри одного региона.


  1. astenix
    09.11.2021 10:03

    В СССР звонили по межгороду через 07, не?!

    …я хватаюсь за диск телефона И набираю вечное "ноль семь" Девушка, здравствуйте Как Вас звать?

    Или

    Швейцар его за ворот
    Тут решил открыться он
    Говорит: "07 я" - "Вам межгород?
    Так надо взять талон"


    1. Laimerus0073
      09.11.2021 10:31
      +1

      "07" во времена СССР - заказ межгорода через оператора.


    1. netch80
      09.11.2021 10:32

      > В СССР звонили по межгороду через 07, не?!

      Не-а. То есть не совсем, не всегда, не везде.

      1. 07 это оператор, а не автоматический набор. Автоматического становилось постепенно всё больше, но в некоторые места так и не сделали автоматический набор. На международку вообще надо было только через оператора звонить.

      Песня Высоцкого, по-моему, про международную связь (в Париж к Марине Влади).

      А ещё во многих местах с большей части города междугородный набор не работал, надо было ходить на спец. пункты звонить из профильных автоматов (и тоже варианты — на локального оператора или автоматом). И тоже постепенно подключали к междугородной связи всё больше и больше локальных станций.

      2. 07 — это чисто московская особенность (может, ещё каких-то городов, но не всех). В других местах делали иначе. В Киеве, например, разделялись всякие 071, 072, 078… не помню точно, какой для чего, но разделялись междугородка несрочная (заказ за 1-2 часа или на конкретное время), междугородка срочная, международка…

      3. Бывали более хитрые системы. Из Луганска (Ворошиловграда) в 1990-м, я помню, звонил через особую сеть, которая была локальной для Донбасса и там наборы содержали длинные цепочки единиц(!) то есть Киев набирался чем-то вроде 1-1-1-1-3-1 (и подождать ещё промежуточного сигнала).
      Где-то в начале 2000-х её ликвидировали, совместив с общей системой.


    1. Vedga
      09.11.2021 10:32

      07 - заказ соединения через оператора. АТС не сразу же появились, в начале были коммутаторы с живыми людьми. 8 и 810 - префиксы для автоматического соединения.

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


    1. YakovlevAndrey
      09.11.2021 10:40

      07 в СССР - это, если мне не изменяет память, служба заказа междугороднего звонка.

      То есть, звонишь телефонной барышне голосом и заказываешь нужное соединение.


  1. mkll
    09.11.2021 10:43
    +10

    Это было сделано еще в СССР для удобства, чтобы не искать в телефоне знак плюс, для внутренних звонков, если оператор получает от вас телефон без знака плюс с 8, то просто меняет его на +7

    Если кто-то помнит или знает, раньше были домашние телефоны и как правило там номера были из семи, шести или пяти цифр. На самом деле при наборе такого номера оператор автоматически дописывал вначале двойки или шестёрки, чтобы цифр стало семь, затем приписывает номер региона в котором ты находишься затем приписывает код страны в которой ты находишься и по итогу ты просто звонишь в собственный город абоненту номер которого ты указал.

    Нет, увы, было не так, никто никуда ничего не подставлял. Оно вообще иначе было устроено. Декадно-шаговые механические АТС по-другому и не умели. Они не работали с цифрами, они имели дело с сигналами (тональными или пульсовыми) и коммутацией физических каналов связи.

    Вообще, есть одно принципиальное отличие в процедуре набора номера на мобильном телефоне и на стационарном:

    Когда вы набираете номер на мобильном, вы сначала его набираете весь целиком, а потом отсылаете. При этом вы можете набрать и меньше цифр, чем надо, и больше (звонок не пройдет, но именно набрать вам никто не помешает). Мобильный оператор получает номер полностью, парсит его и принимает решение, куда зароутить звонок. В процессе парсинга возможны разнообразные подмены и т.д. — всё как мы любим в программировании. Условно говоря, номер передается оператору в "пакетном режиме". Сама возможность этого обусловлена тем, что АТС мобильных операторов — это современные "софтверные" АТС.

    Когда же вы набирали номер на классическом стационарном аппарате, то каждая цифра "отсылалась" сразу по мере набора. Хотя, конечно, трудно говорить об отсылке — между телефонным аппаратом и АТС уже в момент подъема трубки было установлено соединение (был гудок в трубке). Дальше вы начинали набирать номер, при этом АТС в реальном времени анализировала каждую набранную цифру, и если вы набрали что-то не так, то она прерывала вас, например, короткими гудками, еще до того, как вы закончили набор. В процессе набора вы не смогли бы набрать меньше цифр, чем надо (АТС будет ждать очередной цифры, в трубке будет тишина и больше ничего не будет происходить), вы не смогли бы набрать больше цифр, чем надо (АТС начнет устанавливать соединение с абонентом по поступлении последней цифры из ожидаемого кол-ва). Не уверен насчет маршрутизации локальных внутригородских номеров, но если вы в самом начале набрали "8", то вас тут же прокидывало на междугороднюю АТС и дальше ваш телефонный аппарат общался уже с ней (как правило, после прокидывания на межгород даже тональность гудка в трубке менялась, это же всё аналоговое было). Дальше междугородняя АТС ждала от вас либо код города, либо команду на выход на межгород ("10"). Таким образом, маршрутизация звонка осуществляется пошагово, с переключениями в реальном времени на те АТС, которые отвечают за то или иное направление. Условно говоря, номер передавался оператору в диалоговом режиме, а соединение устанавливалось прямо в процессе набора, поэтапно, от АТС к АТС. Ну и сами АТС были громоздкими механизмами с физической коммутацией соединений, отличаясь от нынешних даже больше, чем мэйнфреймы 70-80-х отличались от PC. Чуть лучше, чем тетенька-оператор в совсем уж старых фильмах — но принцип ровно тот же.

    P.S. Отсюда, кстати, вытекает, что только международный формат записи номера (с плюсиком и т.д.) определяет универсальный и не зависящий от местонахождения звонящего "адрес" абонента в мировой телефонной сети. Заданный, говоря современным ИТ-языком, в декларативном стиле. Дескать, вот номер — а теперь давай, соедини меня с ним, мне все равно как ты это сделаешь.

    Формат же записи с восьмерками, нулями, десятками, выходом на межгород и вот это всё — это, фактически, не номер, это маршрут ("сначала выйди на межгород, набрав 8, потом на международ, набрав 10..., а если ведомственная АТС, то прежде всего выйди в городскую сеть, набрав 9"). И этот маршрут зависит от того, в какой точке телефонной сети набирается номер. Императивный стиль, определенно.


    1. netch80
      09.11.2021 11:53

      > Когда же вы набирали номер на классическом стационарном аппарате, то каждая цифра «отсылалась» сразу по мере набора.

      Кстати, забавный факт — в SIP для поддержки такого набора есть спец. метод:

      21.4.22 484 Address Incomplete

      The server received a request with a Request-URI that was incomplete.
      Additional information SHOULD be provided in the reason phrase.

      This status code allows overlapped dialing. With overlapped
      dialing, the client does not know the length of the dialing
      string. It sends strings of increasing lengths, prompting the
      user for more input, until it no longer receives a 484 (Address
      Incomplete) status response.


      Если FXS порт (средство подключения аналогового терминала) настроить на это, то будет общение типа
      <- INVITE 1
      -> 484 Address Incomplete
      <- INVITE 10
      -> 484 Address Incomplete
      <- INVITE 101
      -> 180 Ringing
      -> 200 OK
      "Оператор 29, МЧС, что у вас горит?"


      Но большинство всё-таки затачиваются или на таймаут от последней цифры, или явный '#' как признак «цифры кончились, посылаем полный запрос».


    1. tyomitch
      09.11.2021 12:55

      Отсюда, кстати, вытекает, что только международный формат записи номера (с плюсиком и т.д.) определяет универсальный и не зависящий от местонахождения звонящего "адрес" абонента в мировой телефонной сети.

      От местонахождения, или от оператора?

      Грубо говоря, если я с российской симкой нахожусь в роуминге на Кубе, то будет ли работать восьмёрка в начале номера, и будет ли работать кубинский код межгорода 119?


      1. netch80
        09.11.2021 13:09

        > то будет ли работать восьмёрка в начале номера

        Так это же как раз не международный формат.

        > и будет ли работать кубинский код межгорода 119?

        С плюсом — не должен работать, по определению. Будет работать некий шлюз по умолчанию (скорее всего, самый дорогой).
        А вот без плюса уже куча вариантов.
        У Киевстара так работало несколько лет. Хотите через классический PSTN — ходите через +. Хотите через VoIP, в разы дешевле, но может быть забит — вместо плюса набирайте 015 (012? не помню точно).
        Сейчас убрали — видно, всё загнали на VoIP :)


        1. tyomitch
          09.11.2021 13:22

          Так это же как раз не международный формат.

          Именно про это и вопрос: нужен ли мне, при каком бы то ни было местонахождении, международный формат?


          1. mkll
            09.11.2021 13:34

            Я бы перефразировал — нужны ли какие-либо еще форматы, кроме международного. То, что, например, в России можно позвонить через 8-ку — это местные российские реалии, исключительно ради совместимости с традиционным способом набора.


            1. tyomitch
              09.11.2021 14:29

              Так я уже в третий раз задаю вопрос: это реалии российской территории, или реалии российских операторов?

              Если у меня российская симка и я с ней еду в тмутаракань, я оттуда дозвонюсь по восьмёрке или нет?

              Я честно не знаю.


              1. netch80
                09.11.2021 16:35
                +1

                > Если у меня российская симка и я с ней еду в тмутаракань, я оттуда дозвонюсь по восьмёрке или нет?

                Нет, насколько я знаю. На своего оператора гарантированно раутятся только *100...*119, остальное — дело того, к кому попал в роуминг. А у них таких правил нет, но могут быть свои местные.


              1. mkll
                09.11.2021 16:53

                Так я уже в третий раз задаю вопрос: это реалии российской территории, или реалии российских операторов?

                В обсуждаемом контексте это тождественные понятия. Реалии российских операторов являются таковыми только на российской территории, в их, этих операторов, сетях.

                Когда же вы в роуминге — в чужой сети, где имеют место ее (оператора/территории) собственные реалии.


          1. netch80
            09.11.2021 14:04

            > нужен ли мне, при каком бы то ни было местонахождении, международный формат?

            Если задача универсально дозвониться — да, нужен.
            Иначе будет как в высокофидошные времена: на тот же локальный блок (город, сельский район) звонить через восьмёрку было нельзя, а все телефоны в нодлисте писались в международном формате, поэтому строились правила вида (первое сработавшее останавливает, пример для Киева):

            380442 -> 2
            380444 -> 4
            380445 -> 5
            38044 -> 8w2 (выход на область; пока область не перевели в 045, у них были блоки на 6, 7, 9)
            380 -> 8w0 (например, Львов — 38032 превращался в 8w032)
            -> 8w10 (вся международка)

            Поверьте, вы не захотите сейчас разбираться в том, как из конкретного села куда-то звонить;) и даже как из-под конкретного оператора роуминга.


      1. mkll
        09.11.2021 14:39
        +1

        Грубо говоря, если я с российской симкой нахожусь в роуминге на Кубе, то будет ли работать восьмёрка в начале номера, и будет ли работать кубинский код межгорода 119?

        Поскольку я не настоящий сварщик и с телефонией знаком постольку-поскольку, я могу лишь обоснованно предполагать. Обоснованное предположение заключается в том, что когда вы в роуминге на Кубе, вы находитесь в сети местного оператора, звонки в которой маршрутизируются оборудованием местного оператора и по его правилам. Соответственно, раз местный оператор ничего не знает про российскую практику подмены 8 на +7, то вы никуда не дозвонитесь. Кубинский код межгорода, возможно, работать будет, а возможно и нет — это зависит от настроек маршрутизации местного оператора. Если у абонентов местной мобильной сети этот код работает — будет работать и у вас.

        Именно потому, что все другие форматы записи номера — это "маршруты", использующие "команды" (8, 10, 8-10, 9, 0, 00 и т.д.), понимаемые (или не понимаемые, или понимаемые не так) оборудованием сети, к которой вы подключены.


    1. Wesha
      09.11.2021 20:52
      +1

      номер, при этом АТС в реальном времени анализировала каждую набранную цифру,

      Размечтались, "анализировала" она.

      Декадно-шаговой искатель

      Кадлый "щёлк!" в трубке - это отправка в линию импульса тока. Который вынуждает искатель продвинуться на следующий контакт.

      После какого-то времени отсутствия в линии импульсов (в это время диск оттягивают до очередной цифры) линия переключается на следующий искатель.


      1. mkll
        09.11.2021 20:58
        +2

        Размечтались, "анализировала" она.

        "Обрабатывала" сойдет? Ну вот и славно.


      1. netch80
        10.11.2021 18:30
        +1

        > Кадлый «щёлк!» в трубке — это отправка в линию импульса тока.

        Вообще-то чуть наоборот: это отключение нагрузки в виде телефона, ток, наоборот, перестаёт идти и напряжение между двумя проводами возрастает до несущей абонкомплекта (48-60 вольт). Точно так же можно было простучать по рычагу (или тем пластинам, что в последних аппаратах вместо рычага), работало, при правильных длительностях, как импульсный набор. Я развлекался — набирал 11 импульсов — станции иногда странно реагировали ;)

        > После какого-то времени отсутствия в линии импульсов (в это время диск оттягивают до очередной цифры)

        Нет, таймаут срабатывает уже когда диск вращается назад — у него специально сделан этот замедленный ход и даже единица стоит не в самом начале, а через 3-4 возможных позиции.

        > Декадно-шаговой искатель

        А вот лучше расскажите в подробностях устройство координатной АТС :) на уровне обучающей статьи хабра ;)
        Она на порядок сложнее педально-шаговой (или древесно-шаговой, не знаю, какие оставались в последние годы) и со множеством хитрых решений.


        1. Wesha
          10.11.2021 19:53
          +1

          Ну, я сварщик телефонист не настоящий, в 1985 году на АТС не работал, поэтому про конкретные детали реализации могу быть не точен, но на общеобразовательном уровне принцип работы знаю.

          А вот лучше расскажите в подробностях устройство координатной АТС :) на уровне обучающей статьи хабра ;)

          Это уж лучше Вы, раз уж Вы в этом хозяйстве варились: если начну я, то меня такие как Вы ногами запинают.


          1. netch80
            10.11.2021 20:05
            +1

            > Это уж лучше Вы, раз уж Вы в этом хозяйстве варились

            Увы, мой опыт админа интернет-провайдера (пусть и с пачкой диалап-приёмников нескольких видов) не может помочь собственно в АТС.

            > в 1985 году на АТС не работал

            И я в этом году не работал на АТС, а школьником утаскивал куски кабелей со стройки новой станции.:)


        1. tyomitch
          11.11.2021 12:47

          и даже единица стоит не в самом начале, а через 3-4 возможных позиции.

          https://commons.wikimedia.org/wiki/File:TrimlineExposed.jpg
          https://commons.wikimedia.org/wiki/File:TrimlineExposed.jpg


          1. netch80
            11.11.2021 12:58
            +1

            «To miniaturize the rotary dial sufficiently to fit in the Trimline handset, the designers invented an unusual moving fingerstop.»
            www.youtube.com/watch?v=3VqMunmL484&t=470
            то же самое, запас времени на детект — на обратном ходе.


  1. drWhy
    09.11.2021 12:44
    +1

    Не раскрыта тема спутниковой связи. К примеру, телефонный префикс сети Thuraya: +88216.
    Любому мальчишке раньше из фильмов про Джеймса Бонда было известно, что достаточно набрать нужный номерок с ближайшего телефона-автомата, воспользоваться своим верным Blue box'ом или набрать код по памяти, чтобы дозвониться на спутник, оснащённый мощным лазером и сыграть в морской бой.


    1. psynix
      10.11.2021 20:22

      Не понял вопроса. Коды спутников +88216 или +870 или +8816 явно указывает куда ваш вызов маршрутизировать.


      1. drWhy
        11.11.2021 10:47

        Не вопрос, константация. В статье и комментариях упомянуто много специфических странам или технологиям особенностей адресации а спутники не были упомянуты.
        А ведь спутниковая связь наверняка претерпела достаточно много трансформаций прежде чем стала для пользователей практически такой же простой и удобной, как обычные gsm телефоны.


  1. grumbler66rus
    09.11.2021 18:11
    +2

    Когда я создавал правила валидации номеров телефона, я сначала спросил знающих людей, и они мне подсказали, что в номерах, записанных в международном формате, реально встречаются от 8 до 15 цифр, а ни в одном стандарте нет жёстко заданной длины номера.
    Вы поверхностно ознакомились с темой, ваше изложение не соответствует реальности.


    1. Wesha
      09.11.2021 20:54

      Вы поверхностно ознакомились с темой, ваше изложение не соответствует реальности.

      Эффект Даннинга — Крюгера, сэр.


  1. BMXer_V
    11.11.2021 16:56

    Уже писали, но напишу ещё раз. Все "строгие" формы ввода - маст дай. Ну хочется вам - сделайте подсказчик, удалите пробелы, тире и скобки (за это копипастящие даже спасибо скажут), но оставьте-таки возможность ввести произвольные данные, если юзер этого намеренно желает.

    Я живу во Франции и постоянно сталкиваюсь с этой проблемой. Например, когда Тинькофф сменили форму входа в интернет-банк, я несколько недель не мог залогиниться через браузер, потому что он требовал ввести телефон, а мой телефон туда не вводился.

    Невозможно учесть всех нюансов, поэтому всегда будут проблемы. У автора даже в этой статье полно неточностей и даже ошибок (в России нельзя перейти из одного региона в другой с сохранением номера; французский номер с кодом страны имеет 11 цифр и огромная куча номеров других стран не десятизначные).