Список составили разработчики Java, C++ и JavaScript библиотеки libphonenumber для парсинга, форматирования и проверки телефонных номеров

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

1. Телефонные номера, действительные сейчас, останутся действительными всегда. Телефонные номера определённого типа (например, мобильные), никогда не сменят тип.

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

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

2. Телефонный номер однозначно идентифицирует человека.

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

3. У человека есть только один телефонный номер.

Очевидно, это не всегда так.

4. Телефонные номера не могут быть использованы заново.

Старые номера заново вводят в оборот и раздают другим людям.

5. Каждый код страны соответствует в точности одной стране.

У США, Канады и нескольких карибских островов одинаковый код +1. Россия и Казахстан делят код +7. И это не единственные примеры!

6. Каждой стране соответствует только один код.

В данный момент (март 2016 года) на телефоны в спорной и не всеми признанной территории Косово можно дозвониться через национальные коды Сербии (+381), Словении (+386) или Монако (+377), смотря где и когда был выдан номер.

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

7. Телефонный номер можно набрать отовсюду.

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

8. Есть только два способа набрать номер: в международном формате или в местном.

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

Примеры:

  • В Бразилии для внутренних звонков в определённых географических границ нужно явно указать код оператора, через которого вы хотите звонить.
  • В Непале предваряющий номер "0" опускается в зависимости от того, звоните вы с мобильного или стационарного телефона.
  • В Новой Зеландии нужно набрать код региона (например, 03), даже если номер в том же регионе, что и вы, за исключением «близкого» номера (обычно границы города/района), для которого код региона набирать нельзя.

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

9. Чтобы сделать номер доступным для дозвона, достаточно сменить префикс.

В Аргентине для внутренних звонков нужно вставить цифры "15" после кода региона, но перед местным номером, а цифру "9" после кода страны (54) нужно удалить. Так международный номер +54 9 2982 123456 превращается в местный номер 02982 15 123456.

10. Ни один префикс реального телефонного номера не может быть реальным телефонным номером.

В некоторых странах возможно попасть на другого абонента, если набрать дополнительные цифры после телефонного номера. Так, номер 12345678 может принадлежать одному человеку, а номер 123456 — другому.

11. По неправильно набранному номеру невозможно дозвониться.

В некоторых странах или на некоторых аппаратах лишние цифры отбрасываются. Например, 1-800-MICROSOFT — это неправильный номер, но он всё равно соединит с Microsoft, потому что лишние цифры отбрасываются. Также и на номера вроде 911 в некоторых странах можно позвонить, набрав 911123, но не во всех странах.

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

12. Все действующие телефонные номера соответствуют спецификациям ITU.

Спецификации ITU содержат стандарты вроде такого: «Национальные номера не могут быть больше 16 разрядов», но в Германии раздавали действующие телефонные номера длиннее этого.

13. Все действующие телефонные номера принадлежат какой-либо стране.

Есть много «национальных кодов», которые выдавали организациям без географической привязки, таким как "800" или спутниковые сервисы.

14. Телефонный номер содержит только цифры.

В Израиле некоторые рекламные номера начинаются с "*".

15. Телефонные номера всегда написаны в ASCII.

В Египте телефонные номера обычно записывают местными цифрами.

См. также
Заблуждения программистов относительно времени
Заблуждения программистов об именах

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


  1. k12th
    21.03.2016 11:54
    +18

    В Египте телефонные номера обычно записывают местными иероглифами.

    В оригинале «written in native digits», слов «местные» и «иероглифы» там нет. Пользуются арабскими цифрами, хотя и в непривычном для нас начертании. Иероглифами там не пишут пару тысяч лет, ЕМНИП.


    1. alizar
      21.03.2016 12:23

      ok, спасибо


    1. AndersonDunai
      21.03.2016 14:36
      +41

      А я себе уже размечтался...

      Скрытый текст



      1. tyomitch
        21.03.2016 20:04
        +5

        Второй и третий справа персонажи что-то странное делают


  1. satandyh
    21.03.2016 14:32
    +1

    Так, может кому пригодится. Список MCC (Mobile Country Code) MNC (Mobile Network Code) CC (Country Code) по странам.


    1. GAS_85
      21.03.2016 14:39

      Это про http://mcc-mnc.com/ ?


      1. satandyh
        21.03.2016 14:45

        Да. К сожалению слишком быстро нажал кнопку отправить. Благодарю на вставку ссылки.


      1. Tatikoma
        21.03.2016 16:49

        На гитхабе есть в программно-понятном формате.
        github.com/musalbas/mcc-mnc-table


    1. anatolie
      21.03.2016 15:16

      Не у всех есть доступ к сигнализации, и не все телефонные номера используют в сетях 3gpp


  1. Inkanus
    21.03.2016 15:20
    +4

    Хорошие замечания. Мне известен случай, когда «Мегафон» без объяснения причин отобрал красивый номер у частного клиента и отдал его фирме. Да, в одностороннем порядке разорвал контракт и даже не принёс извинений.


  1. mvalery
    21.03.2016 15:20
    -8

    Живём в Израиле.

    Телефонные номера, действительные сейчас, останутся действительными всегда.
    Нет. В Израиле дважды за последние 20 лет увеличивали длину номера. Один раз для стационарных, другой раз для сотовых.

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


    1. ValdikSS
      21.03.2016 16:00
      +7

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


    1. artemerschow
      21.03.2016 16:49
      +2

      Хм… А в статье разве написано иначе?


  1. npocmu
    21.03.2016 15:20
    +1

    По п.10: Можно пример такой страны?

    По п.14: Номер может содержать шестнадцатеричные цифры A-F (например, оборудование EWSD это позволяет).


    1. satandyh
      21.03.2016 15:54

      Лучше шестнадцатеричные не использовать, т.к. на них завязано использование такой фичи как MNP.


    1. WST
      21.03.2016 16:44

      По пункту 10 Индонезия, например. У меня много контактов оттуда, есть одна подруга с феерически блатным коротким номером — не в типа 0890, а именно с кодом оператора, но на 2 знака короче, чем у остальных.


    1. VaKU
      22.03.2016 01:19
      +1

      Рискну предположить, что не A-F, а A-D, так как таблица DTMF тонов состоит всего из 16 элементов (4x4), и кроме 10 цифр, два из них занято на * и #, то на буквы остаётся всего 4 позиции.


  1. dymar
    22.03.2016 01:19
    +1

    Телефонные номера могут быть записаны словами (буквами), тогда получится так называемый слово-номер например 1-800-Flowers. Это часто практикуется в Америке, Австралии и др. (подробнее ru.wikipedia.org/wiki/%D0%A1%D0%BB%D0%BE%D0%B2%D0%BE-%D0%BD%D0%BE%D0%BC%D0%B5%D1%80). В России слово-номера не так распространены, так-что многие даже не знают, что являются обладателями престижного слово-номера, хотя существуют сервисы поиска слов в номере и даже на русском языке.


    1. dymar
      22.03.2016 13:53

      Для тех кто хочет поискать слова в своем номере, вот ссылки на сервисы поиска слов: http://phonespell.org/ https://nomerslovami.ru/


  1. vlivyur
    22.03.2016 11:19

    А в России ещё не так давно (сейчас скорее всего это уже не так) внутриобластные номера были короче на пару цифр (к примеру, для Мурманской области для звонка в соседний город можно было набирать не 8-815+внутриобластной код города+городской номер телефона, а 8-2+внутриобластной код города+городской номер). Причём для областного центра почти везде внутриобластной код = 2 (не работает в миллионниках и приближенных к ним).
    А ещё могут часть номеров передать на другую АТС и поменяется префикс у городского телефона. И некоторое время можно будет дозвониться по старому номеру, сюрприз лишь потом будет.