电话号码有标准吗? [英] Is there a standard for phone numbers?
本文介绍了电话号码有标准吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在您说这个问题已经被问到之前,请注意我已经审阅了这些内容:
- Is there a standard for storing normalized phone numbers in a database?-这是2008年的,说当时还没有这样的标准。我希望过去13年有所改变。
- How to validate phone numbers using regex-我已经有了解析;它非常简单:如果不是数字,跳过它。这个问题不是关于解析器的,而是关于我保存/显示它的格式。我不担心它有多难解析,而是它是否为标准格式。
假设我正在开发一个必须处理电话号码的程序,我希望确保以标准格式保存和显示电话号码,以便其他程序和人类也可以一致地理解它们。
例如,我看到以下所有内容都是同一美国电话号码的有效表示:
1234567
123-4567
123 4567
5551234567
(555) 1234567
555-1234567
555 123 4567
555-123-4567
(555)-123-4567
(555) 123-4567
(5) 123 4567
1-555-123-4567
(1) 555-123-4567
+1 555-123-4567
+1 555 123-4567
+1 (555) 123-4567
- Ad NAIVUM…
然后不同的国家/地区以不同的方式表示数字:
55 1234 567 8901
55 12 3456 7890
55 123 456 7890
55 1234 567890
555 123 456
(55) 123 4567
5.555.123-45-67
- Ad NAIVUM…
推荐答案
没有国际标准化组织标准,但有国际电联标准。您需要E.123和E.164。
总而言之,任何电话号码都由+CC mm mm表示。其中CC是国家代码,是一到三位数,嗯……是区号(如果适用)和订户号码。总位数不能超过15位。+表示"您本地的国际拨号前缀"。我将使用我自己的固定电话号码举几个例子。
例如,如果您在德国,号码+44 2087712924将被拨为00442087712924,而在美国您将被拨为011442087712924。44表示它是英国号码,2087712924是本地号码。在实践中,长串的嗯……通常被分成更小的部分,以便于阅读。如何做到这一点因国家而异。我举的例子通常是+44 20 8771 2924。
除了上面明确的E.123表示法(您可以在世界任何地方使用它来支持国际拨号)之外,每个国家也有自己的本地数字表示法,有些国家还有几种。示例号码有时会写为020 8771 2924或(020)8771 2924。严格地说,前导0不是区号(即20)的一部分,而是给交换机的信号,意思是"这里有一个号码可以转到本地以外"。区号偶尔会被省略,号码会写成8771 2924。所有这些当地的表述都是模棱两可的,因为它们可能代表多个国家的有效数字,甚至可能代表同一国家多个地区的有效数字。这意味着您应该始终存储一个带有国家代码的号码,理想情况下应该以E.123表示法存储。特别是,你应该注意到,电话号码不是数字。像05这样的数字与5相同。电话号码05与5不是,存储系统将去掉数字中的前导零。在数据库中将电话号码存储为CHAR或VARCHAR。最后,还有一些奇怪的事情。一些愚蠢的人会把这个数字写成0208 771 2924。这是可拨打的,但如果您去掉前导0208(假设它是区号),则剩余的号码作为本地号码无效。一些电话系统故障的国家(盯着北美)有完全疯狂的系统,在某些地方,你必须拨打所有10个数字才能拨打本地电话,有些地方你不能,有些地方你必须拨1NNN NNN NNNN,有些地方你不能包括主叫,等等。在所有此类情况下,存储号码为+CC MM...是正确的。这取决于实际拨打电话的人(或他们的拨号软件),找出如何将其转换为特定位置的可拨数字序列。
这篇关于电话号码有标准吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文