Finska personnummer har formatet DDMMÅÅ-###B där B är en siffra eller bokstav. Svenska tror jag har ÅÅMMDD-###B. Kolla om du kan använda/bygga om mitt gamla uppskick Problemet är att hashvärdet/kontrollsumman förmodligen beräknas på exakt samma sätt, alltså utgående ifrån talets position. Och då är du helt rökt på den fronten. För att krångla till det lite extra kan jag glädja dig med att svenska personnr kommer ändras fom. i sommar (Tror jag). http://sv.wikipedia.org/wiki/Personnummer_i_Sverige Tack för alla svaren! <b>>Jag tror att jag kan få ett någorlunda säkert resultat ifall jag kollar både 2 första och 2 sista siffrorna i första gruppen samt kontrollsiffran i andra gruppen.</b> Faeeeeeen vet vilken ställning jag skall ta till det.Skilja på svenska och finska personnummer?
Jobbar med ett program som måste kunna skilja på svenska och finska personnummer.
Det är möjligt att det här inte går att lösa med regular expressions (hur skiljer man t.ex. på 010203-2222 och 030201-2222? Omöjligt att avgöra om de är finska eller svenska).
Men har för mig att det finns någon sorts matematisk formel som personnummret måste matcha med men vet inget desto mera, kan detta utnyttjas för att skilja på dem?Sv: Skilja på svenska och finska personnummer?
Programarkivet:KontrollSiffra PersonNummer mfl.Sv: Skilja på svenska och finska personnummer?
Och även om de skulle beräknas på olika sätt är det inget som säger att du inte kan få krockar.
Kolla upp exakt hur finska personnummer är konstruerade och återkom med det, så kanske vi kan se om det går att lösa.
Det sannolikt enda vettiga sättet att lösa det är att låta användaren ange vilket det är, möjligtvis med vissa definitiva krav, och ev. med lite smarta gissningar.
Dvs: Kolla de två första siffrorna, om de är >31 är det svenska. Kolla siffra 5,6. Om de är >31 är det finska. Avd. "smarta gissningar" är det ju att försöka konstruera ett datum på båda sättet, om ett av dem failar så väljer du det andra.
Regular expressions kan du fetglömma.Sv: Skilja på svenska och finska personnummer?
Vi har slut på personnr i sverige och därför kommer man införa ett personnr som inte längre innehåller datum info.
Har dock inte fått se det nya formatet än.Sv:Skilja på svenska och finska personnummer?
http://www.dn.se/opinion/debatt/personnumren-tar-snart-slut-och-maste-darfor-ersattas-1.451552
(Och där ser vi för övrigt http://sv.wikipedia.org/wiki/Personnummer som skulle kunna underlätta lite för finska vs svenska. Jag kan dock inte se någon som helst garanti att kontrollsiffran inte skulle kunna krocka.)
Men ang. nya personnummer. Fan vet hur de tänker... Det hade varit betydligt mer långsiktigt att införa en helt ny typ av personnummer. Låt säga ett 16-siffrigt, där nuvarande 6+4 då skulle bli 8 + 8.
För de fyra nya sista siffrorna skulle man på befintliga personnummer först använda de fyra sista siffrorna, och sen lägga på ytterligare två, beräknade från personnumret med samma formel.
231010 1234
Skulle då bli
19231010 1234 75
Där 7 är beräknat utifrån hela sekvensen fram dit, och 5 samma sak fast fram till 7:an.
Till slut skulle man slänga på ett tvåsiffrigt kontrollnummer, som är det enda kontrollnumret man räknar med. För "nya" kan man utnyttja kontrollsiffrorna 4-6 som fria nummer.
Detta skulle då göra att man kommer upp i 50000 per dag och kön.
Och varför skulle detta vara bättre än att släppa lite på den gamla 6+4?
Alla system måste ändå skrivas om för att hantera en ändring. Varför inte göra en nytt tydligt, distinkt personnummer som har bättre egenskaper, enkelt att mappa från gamla personnummer.Sv: Skilja på svenska och finska personnummer?
Jag tror att jag kan få ett någorlunda säkert resultat ifall jag kollar både 2 första och 2 sista siffrorna i första gruppen samt kontrollsiffran i andra gruppen.
Lärde mig också en del nay saker från wiki-artikeln, till exempel:
Finland:
"De första sex siffrorna är födelsedatum i ordningen dag-månad-år. Sedan har man en symbol för århundrade, "-" för 1900-talet, "+" för 1800-talet och "A" för 2000-talet. Efter det följer tre siffror (den sista av dem är udda för män och jämn för kvinnor) samt ett kontrolltecken som kan vara en siffra eller en bokstav."
Sverige:
"De sex första siffrorna anger personens födelsedatum i ordningen år-månad-dag. Skiljetecknet är ett bindestreck (-), men ändras till ett plustecken (+) från och med det år då innehavaren fyller 100 år."
Men är inte sveriges system i det fallet väldigt kortsiktigt, Det enda som händer är ju att problemet med "stackade" personnummer skjuts upp ett år.
Jag önskar att det kom någon sorts worldwide standard för personnummer, eller åtminstone en EU standard, men verkar inte vara något tal om det?Sv:Skilja på svenska och finska personnummer?
"Någorlunda" var ordet. Jag skulle inte låta programmet släppa igenom ett enda personnummer som den inte är 100% säker på (naturligtvis kan du ju slänga på vetskapen om +/-/A också).
Sen är det ju å andra sidan så att det faktiskt bara är en begränsad mängd personnummer så man kan ju faktiskt testa dem. För dagar 01-31, år 01-31, där har vi 31*31 olika möjligheter. Sen har vi tre extra siffror att lattja med, dvs 31*31*1000. Om den finska kontrollsiffran motsvarar den svenska för något av de 961000 så finns det krockar.
Tar vi då sannolikheten för det borde vi få en uppskattning.
Det finns 31 finska kontrollsiffror. 21 av dem har ingen matchning. av 961000 finns det då kvar ca 310000.
Av dessa så är det 1/10 att kontrollsiffran matchar. Det motsvarar 31000.
Du får hoppas att ingen av de 31000 behöver registrera sig! =)
<b>Men är inte sveriges system i det fallet väldigt kortsiktigt, Det enda som händer är ju att problemet med "stackade" personnummer skjuts upp ett år.</b>
Därför kör vi på mitt förslag tycker jag.
<b>Jag önskar att det kom någon sorts worldwide standard för personnummer, eller åtminstone en EU standard, men verkar inte vara något tal om det?</b>
IPv6 for everyone! =)Sv: Skilja på svenska och finska personnummer?
Om Vi alla på globen skall få ett security number måste det också medföra sociala rättigheter.
Sverige blev världsberömt när Vi införde vårt system och det var/är kanonbra.
MEN !!! det får inte användas till att exkludera människor !