Список составили разработчики Java, C++ и JavaScript библиотеки libphonenumber для парсинга, форматирования и проверки телефонных номеров
Телефонные номера используются повсеместно и довольно давно. Поэтому очень удивительно, сколько заблуждений остаётся у программистов относительно них.
1. Телефонные номера, действительные сейчас, останутся действительными всегда. Телефонные номера определённого типа (например, мобильные), никогда не сменят тип.
Подключенный сегодня телефонный номер завтра могут отключить. Бесплатный сегодня номер завтра может стать платным. Оператор связи может расширить диапазон доступных номеров, добавив дополнительную цифру и увеличив длину номера.
Подсказка. Не сохраняйте свойства телефонного номера, такие как валидность или тип. Проверяйте эту информацию с помощью библиотеки, когда необходимо.
2. Телефонный номер однозначно идентифицирует человека.
Ещё не так давно, когда мобильников не существовало, считалось вполне нормальным иметь один домашний телефон для всей семьи. В некоторых районах мира такое сохранилось до сих пор, когда родственники (или даже друзья) пользуются общим телефонным номером.
3. У человека есть только один телефонный номер.
Очевидно, это не всегда так.
4. Телефонные номера не могут быть использованы заново.
Старые номера заново вводят в оборот и раздают другим людям.
5. Каждый код страны соответствует в точности одной стране.
У США, Канады и нескольких карибских островов одинаковый код +1. Россия и Казахстан делят код +7. И это не единственные примеры!
6. Каждой стране соответствует только один код.
В данный момент (март 2016 года) на телефоны в спорной и не всеми признанной территории Косово можно дозвониться через национальные коды Сербии (+381), Словении (+386) или Монако (+377), смотря где и когда был выдан номер.
Подсказка. Используйте телефонный виджет, чтобы подтолкнуть пользователей к вводу телефонного номера в международном формате.
7. Телефонный номер можно набрать отовсюду.
Некоторые номера можно набрать только внутри страны. Некоторые набираются из определённой группы стран, например, как международные номера 00800. Некоторые набираются только если абонент обслуживается конкретным оператором связи.
8. Есть только два способа набрать номер: в международном формате или в местном.
Для некоторых номеров требуются различные префиксы, в зависимости от того, откуда набирается номер; с какого устройства и на какое устройство вы звоните; находитесь ли вы внутри или за пределами определённого географического региона.
Примеры:
Подсказка. Используйте 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.
В Египте телефонные номера обычно записывают местными цифрами.
См. также
Заблуждения программистов относительно времени
Заблуждения программистов об именах
Телефонные номера используются повсеместно и довольно давно. Поэтому очень удивительно, сколько заблуждений остаётся у программистов относительно них.
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.
В Египте телефонные номера обычно записывают местными цифрами.
См. также
Заблуждения программистов относительно времени
Заблуждения программистов об именах
k12th
В оригинале «written in native digits», слов «местные» и «иероглифы» там нет. Пользуются арабскими цифрами, хотя и в непривычном для нас начертании. Иероглифами там не пишут пару тысяч лет, ЕМНИП.
alizar
ok, спасибо
AndersonDunai
А я себе уже размечтался...
tyomitch
Второй и третий справа персонажи что-то странное делают
satandyh
Так, может кому пригодится. Список MCC (Mobile Country Code) MNC (Mobile Network Code) CC (Country Code) по странам.
GAS_85
Это про http://mcc-mnc.com/ ?
satandyh
Да. К сожалению слишком быстро нажал кнопку отправить. Благодарю на вставку ссылки.
Tatikoma
На гитхабе есть в программно-понятном формате.
github.com/musalbas/mcc-mnc-table
anatolie
Не у всех есть доступ к сигнализации, и не все телефонные номера используют в сетях 3gpp
Inkanus
Хорошие замечания. Мне известен случай, когда «Мегафон» без объяснения причин отобрал красивый номер у частного клиента и отдал его фирме. Да, в одностороннем порядке разорвал контракт и даже не принёс извинений.
mvalery
Живём в Израиле.
Телефонные номера, действительные сейчас, останутся действительными всегда.
Нет. В Израиле дважды за последние 20 лет увеличивали длину номера. Один раз для стационарных, другой раз для сотовых.
Телефонный номер однозначно идентифицирует человека.
Нет. Например у моих пожилых родителей есть свои мобильники, однако, во многих организациях указан мой мобильник, т.к. я говорю на иврите.
ValdikSS
Это заголовки заблуждений, которые опровергают в тексте. Вы, вероятно, их как утверждения восприняли.
artemerschow
Хм… А в статье разве написано иначе?
npocmu
По п.10: Можно пример такой страны?
По п.14: Номер может содержать шестнадцатеричные цифры A-F (например, оборудование EWSD это позволяет).
satandyh
Лучше шестнадцатеричные не использовать, т.к. на них завязано использование такой фичи как MNP.
WST
По пункту 10 Индонезия, например. У меня много контактов оттуда, есть одна подруга с феерически блатным коротким номером — не в типа 0890, а именно с кодом оператора, но на 2 знака короче, чем у остальных.
VaKU
Рискну предположить, что не A-F, а A-D, так как таблица DTMF тонов состоит всего из 16 элементов (4x4), и кроме 10 цифр, два из них занято на * и #, то на буквы остаётся всего 4 позиции.
dymar
Телефонные номера могут быть записаны словами (буквами), тогда получится так называемый слово-номер например 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). В России слово-номера не так распространены, так-что многие даже не знают, что являются обладателями престижного слово-номера, хотя существуют сервисы поиска слов в номере и даже на русском языке.
dymar
Для тех кто хочет поискать слова в своем номере, вот ссылки на сервисы поиска слов: http://phonespell.org/ https://nomerslovami.ru/
vlivyur
А в России ещё не так давно (сейчас скорее всего это уже не так) внутриобластные номера были короче на пару цифр (к примеру, для Мурманской области для звонка в соседний город можно было набирать не 8-815+внутриобластной код города+городской номер телефона, а 8-2+внутриобластной код города+городской номер). Причём для областного центра почти везде внутриобластной код = 2 (не работает в миллионниках и приближенных к ним).
А ещё могут часть номеров передать на другую АТС и поменяется префикс у городского телефона. И некоторое время можно будет дозвониться по старому номеру, сюрприз лишь потом будет.