AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Telefonnummer Format Weltweit

Ein Thema von RWarnecke · begonnen am 26. Dez 2015 · letzter Beitrag vom 15. Nov 2020
Antwort Antwort
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#1

Telefonnummer Format Weltweit

  Alt 26. Dez 2015, 23:04
Hallo zusammen,

ich muss für einen Auftrag bestehende Telefonnummern (weltweit) auslesen und die in einem bestimmten Format abspeichern. Ich gebe mal das Beispiel für Deutschland. Ich kann ja eine Telefonnummer wie folgt schreiben :
  1. +49 711 123456789
  2. +49 (0) 711 123456789
  3. 0049 711 123456789
  4. 0711 123456789
Diese eine Telefonnummer muss ich in dem ersten Format abspeichern. Beim Auslesen kann aber auch das Format 2 - 4 vorkommen. Für Deutschland habe ich es soweit schon erledigt. Jetzt ist meine Frage, gilt dieses auch für die anderen Länder oder gibt es hier Ausnahmen und wenn ja welche ? Habt Ihr dazu irgendwelche Links, wo es für die einzelnen Ländern beschrieben ist ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Telefonnummer Format Weltweit

  Alt 26. Dez 2015, 23:21
Ist zwar nicht Delphi, aber du solltest einen guten Überblick und Anhaltspunkt haben

https://github.com/googlei18n/libphonenumber
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.685 Beiträge
 
Delphi 2007 Enterprise
 
#3

AW: Telefonnummer Format Weltweit

  Alt 27. Dez 2015, 02:48
Wie sicher kannst du sein, dass alle Rufnummern wohlgeformt hinterlegt sind? (Unabhängig vom genauen Format.)
Kommen nur deutsche Nummern vor, oder kann prinzipiell alles dabei sein?

Das Problem bei Rufnummern ist, dass die Länder- und Ortsvorwahlen keine feste Länge haben. Es gibt Länder mit zweistelligen Nummern, aber auch welche mit 3 Stellen. Auch Ortsvorwahlen können 2-4 Stellen haben, zumindest in Deutschland. Wie es international aussieht weiss ich nicht. Wenn die Eingabe daher nicht garantiert wohlgeformt ist, hast du im Grunde erstmal keine andere Chance als alle Zeichen ausser die Ziffern zu entfernen, und die Nummer bzgl. der Anzeige neu aufzubauen. Um dies zu tun braucht man dann aber fast schon zwingend eine Liste aller Länder- und Ortsvorwahlen weltweit, mit denen man dann Ziffer für Ziffer durchgehen muss um zu ermitteln wo nun die Leerzeichen hin kommen.

Dazu kommt das Problem, dass die sog. Verkehrsausscheidungsziffer (die 0 vor Vorwahlen wenn keine Ländervorwahl gewählt wird, die manchmal in Klammern steht) optional ist, und eben nicht immer in Klammern steht, wenn sie denn überhaupt da steht. Die E.123 Empfehlung sieht es z.B. gar nicht vor diese überhaupt anzugeben, wenn internationale Nummern gemeint sind.

Und da kommt schon das nächste Problem: Sind garantiert alle Nummern mit Ländervorwahl eingetragen? Wenn nicht, dann wird es schon recht fummelig. (Gut, amn kann die daran erkennen, dass sie nicht mit "+", "00" oder "1..9" anfangen. Nichtsdestotrotz eine Verkomplizierung.) Gleiches Spiel für Ortsvorwahlen.

Telefonnummern sind für strukturierte Systeme wie Computer ein Graus. Gewachsenes Kraut.

Ultimativ würde ich die Datenbank (ich vermute mal es steht eine dahinter) anders aufbauen, und für Länder- Orts- Teilnehmer und Durchwahl je ein eigenes Feld nehmen. Dann hat man ein Mal den Aufwand die Bestandsdaten dahin zu überführen, aber ab dann läuft's erheblich geordneter. Und man kann die Darstellung nachher auch noch wunderschön variabel halten und an den Kunden anpassen. (Oder ihm gar die Wahl zwischen verschiedenen Formaten lassen!)
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Telefonnummer Format Weltweit

  Alt 27. Dez 2015, 07:14
Steig über die https://de.wikipedia.org/wiki/Telefonvorwahl ein.
oder hier http://www.delphipraxis.net/185349-t...mer-check.html Und verlier nicht aus den Augen wer die Nummer(n) erfasst hat. US-Amerikaner sehen da einiges anders als Deutsche, und die wiederum anders als Franzosen, um mal ein Beispiel zu nennen.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.640 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Telefonnummer Format Weltweit

  Alt 27. Dez 2015, 09:12
Ist zwar nicht Delphi, aber du solltest einen guten Überblick und Anhaltspunkt haben

https://github.com/googlei18n/libphonenumber
Hier bist Du definitiv richtig. Die Lib als DLL zu kompilieren habe ich aber noch nicht geschafft. Ich versuche deshalb das ganze per Java-JNI einzubinden.

Als Einstieg wäre auch eine Delphi-Variante vorhanden

http://sourceforge.net/p/alcinoe/cod...honeNumber.pas

allerdings ist die da genutzte DLL schon etwas älter. Das Projekt auf GitHub erhält sehr oft Aktualisierungen von Formaten und Varianten.
Sven Harazim
--
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#6

AW: Telefonnummer Format Weltweit

  Alt 27. Dez 2015, 10:08
Guten Morgen,

danke erstmal für die vielen Antworten. Ich hätte nicht gedacht, dass es so kompliziert ist. Ich merke erst jetzt, dass ich meine Frage noch weiter hätte präzisieren müssen. Ich lese die Telefonnummern über das TMS Cloud Pack von dem iCloud Adressbuch aus in einer Windows Anwendung. Da sind die 4 Formate aus meinem ersten Beitrag enthalten. Ich will nicht nach Landesvorwahl, Ortsvorwahl und eigentlicher Rufnummer trennen. Ich möchte lediglich nur das erste Format erhalten aus meinem ersten Beitrag. Für Deutschland prüfe ich ab, ist das erste Zeichen eine Null, dann ersetze ich die 0 durch +49. Für diesen Fall gibt es eine Lokalisierung in den Einstellungen der Windows Anwendung. Steht die (0) mit in der Telefonnummer, lösche ich diese raus und wird die Landesvorwahl mit 0049 angegeben, dann mache ich daraus +49. Mir geht es hauptsächlich darum, kann ich das Prinzip mit der Null bei den Vorwahlen auch für andere Länder übernehmen oder nicht ? Mir geht es darum, dass ich in der Datenbank ein einheitliches Format habe.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Telefonnummer Format Weltweit

  Alt 27. Dez 2015, 10:52
Wenn Du eine 00x in die Hände bekommst, dann kannst Du so vorgehen. Hast Du nur eine oder keine führende Null, dann enthält die Nummer keine Ländervorwahl.
Was mit 49/811.2244557 und ähnlichen Krüppeln ist, steht auf einem ganz anderen Blatt

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Telefonnummer Format Weltweit

  Alt 27. Dez 2015, 10:54
Die 00 hat mit "anderen" Ländern nichts zu tun, denn das ist die Ziffernfolge die in Deutschland eine internationale Rufnummer einleitet.

In jedem Land kann die anders sein (meistens ist das aber gleich) spielt aber keine Geige, wenn sich die Rufnummern auf den Kontext Deutschland beziehen.

Dieses (0) nach dem internationalen Prefix ist eigentlich überflüssig und kann ersatzlos gestrichen werden. Vorsicht aber bei italienischen Rufnummern, da ist die 0 Pflicht.

Es ist eben nicht trivial und das Projekt gibt dir einen Anhaltspunkt wie komplex das Thema ist.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.640 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Telefonnummer Format Weltweit

  Alt 15. Nov 2020, 10:12
Falls das mal noch jemand sucht, ich hab einen Wrapper um den C#-Port gebastelt. 32 bit und 64 bit Unterstützung

https://github.com/landrix/LibPhonenumber-for-Delphi

Ich werde das immer aktuell zum Port halten.
Sven Harazim
--
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.936 Beiträge
 
Delphi 12 Athens
 
#10

AW: Telefonnummer Format Weltweit

  Alt 15. Nov 2020, 21:15
Falls das mal noch jemand sucht, ich hab einen Wrapper um den C#-Port gebastelt. 32 bit und 64 bit Unterstützung

https://github.com/landrix/LibPhonenumber-for-Delphi

Ich werde das immer aktuell zum Port halten.
Da ist ja wohl Mal ein Lob fällig...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz