Just bought an HTC one and found out that it suffers from this problem: https://code.google.com/p/android/issues/detail?id=4134
Basically, when someone enters a number in their contact list with the country code, e.g. +44-123-456-7890 when he receives a call from that number, the 44 isn't displayed so the phone doesn't recognize the contact, and displays only 123-456-7890 but when he receives an SMS, it displays correctly because SMS apparently are sent with the country code, at least in some countries. Now if I change my contact and remove the 44, the calls display the correct contact name but on receiving an SMS it will display +44-123-456-7890 instead of the contact..
It's really annoying and the only workaround for me was to enter 2 phone numbers for each contact.. But for such a high end phone, and such an old problem, I find it ridiculous that this problem still exists..
I haven't experienced that problem with another handset, e.g. iphone, S4..or even a Nokia 3310..
I've told HTC about the problem and really hope they fix this issue.. They've told me that it's carrier related, but if so, then other handsets like iphones and S4 have implemented a way to work around the problem..so HTC should be able to do the same. HTC did say that they will still look into a way to fix the issue.
Just wanted to share.. in case anyone experiences that problem.