WAI
Status Update
Comments
rn...@google.com <rn...@google.com> #2
Hi,
Thank you for taking the time to improve libphonenumber!
We are looking into this and will respond as soon as possible.
pe...@google.com <pe...@google.com> #3
Hi,
Thanks much for raising this issue. This is one of our known issue, which is not documented. Having phone numbers of this long are very rare. libphonenumber cannot do anything better here.
Reasons:
- JavaScript
Number
type has limitation of 2^53 (9007199254740992) as the max literal it can hold. When provided more than that like "90018408059449376"(17 digit), JS starts rounding the value. Unfortunately this is within the range of i.e 17 digit.possible phone number length - Both the alternatives leads to backward-incompatible changes as the type of the field '''national_number''' has to be changed; thus leading to client-side compile issue . Eg: setNationalNumber(1234) / conversions to payloads like JSON.
- Marking the field as
[jstype = JS_STRING]
- Or using new JS data type
BigInt
.
We will update FAQ at GitHub stating some of these points. Maybe you can compare with Number.MAX_VALUE and avoid such cases. Or post request to a Java/CPP/PY libphonenumber clients, as these langs have much more matured data type systems.
Description
Country: BY (Belarus) Example number(s) and/or ranges: +3758810\d{7}, example: +37588105555555 For short codes, cost and dialing restrictions: Where or whom did you get the number(s) from: production service, we validate phones before save
Authoritative evidence (e.g.national numbering plan, operator announcement):https://en.wikipedia.org/wiki/Telephone_numbers_in_Belarus
Link from demo (http://libphonenumber.appspot.com ) showing error:
https://libphonenumber.appspot.com/phonenumberparser?number=%2B3758105555555
return
E164 format: +3758105555555
International format +3758105555555
but we corrupt number, we lost 8 in the 4th position
enter: +375 8 810 5555555 exit: +375 810 5555555
number cant be read again in libphonenumber library after broken