电话号码有标准吗? [英] Is there a standard for phone numbers?

查看:13
本文介绍了电话号码有标准吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在您说这个问题已经被问到之前,请注意我已经审阅了这些内容:


假设我正在开发一个必须处理电话号码的程序,我希望确保以标准格式保存和显示电话号码,以便其他程序和人类也可以一致地理解它们。

例如,我看到以下所有内容都是同一美国电话号码的有效表示:

  • 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…
如您所见,用户查看有效电话号码的方式几乎是无限的(Telephone numbers in the UK的维基百科页面有26个打印页面)。我希望我的数据库和屏幕上的所有数字都是全世界都能识别的格式。据我所知,ISO和ANSI没有定义的格式。是否有电话号码的标准表示法?

推荐答案

没有国际标准化组织标准,但有国际电联标准。您需要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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆